2018-08-06

How I Got Here (part 2)

So that was my childhood. After graduating high school in 1982, I left Arkansas for Atlanta (where I had relatives to stay with) for college. I majored in Business Administration because my school didn't have a dedicated computer science program back then, and all the computer courses were taught by the College of Business. So be it, I thought. I'd just concentrate on the computer stuff, which I did, and if I got a few smudges of business on me, that was just the price I'd have to pay. I continued in much the same computer-focused vein I'd begun years before, but now I had much fancier computers to play with.

I wasn't there long before I got a part-time job as a terminal room consultant helping the programming noobies figure out which way was up, making sure the line printers had green bar paper in them, and using every free minute to WRITE MORE CODE. I got there right after they'd carted away the old punch card systems. The school had finally decided that there was something to this new Winchester drive technology, and so users were being allotted drive space for their class assignments. They were even replacing printing terminals with video terminals. VT-100, baby! ANSI escape sequences! I was so hooked. I remember talking to one of the senior terminal room guys about some code he was working on and was honestly dumbfounded when he said he was taking a break. I couldn't imagine spending free time away from the computer.

I didn't know it at the time, but I needed help. Working with people was good for me.  I learned to work with people and to genuinely help students. Not overnight, but I learned. We were also starting to get these new IBM PCs that ran something called DOS. They had 5-1/4 inch disk drives that would hold the whole world in 360K (or even 720K). It wasn't long before Pascal replaced BASIC as the language of choice, and Borland's Turbo Pascal was the new hotness. I wrote a scheduling program in Turbo Pascal for the terminal rooms, allowing students to have an allotted time at a terminal, and if all the terminals were occupied, they were put on a waiting list.

It wasn't long before I got a fulltime job programming at the computer center. This let me qualify for in-state tuition, which in turn, let me start paying my own tuition if I cut back to one class per quarter. I was already working as a programmer, so I didn't have a lot of motivation to graduate. But I stayed in school, of course. I still needed a degree, albeit a BBA.

I worked for maybe a year or so in customer support and then moved into the networking group. That was a huge education. Those were the dial-up days, generally at 56kbps. DSL existed in magazines, but it was still a few years from being common or affordable. The TCP/IP-based Internet that we have in our pockets today was in its early stages at best. We were setting up token ring LANs all over the computer center and connecting Novell Netware fileservers. Yep. One of my hats said "Netware Admin" right on the front.

Actually, I was the only non-network guy in the quickly growing networking group. I was their programmer. This meant they had to explain networking to me in very simple terms. Another fantastic education. Addresses. Ports. Services. Sockets. Packet structure. CIDR arithmetic. Routing protocols. Fun, fun, fun. It was a good run, but things change, and changes add up. They eventually just ran out of things for a programmer to do. More and more, I was using AutoCAD to lay out networks for new labs. While this taught me the LISP programming language for automating things in AutoCAD, it wasn't the kind of work I really enjoyed. I think I still have the record for longest notice ever. I let my boss know I was looking elsewhere, and it was about a year later that I took a consulting job out in the "real world."

I've rambled enough for now, and I'm a little amazed if anyone is still reading. :-)

2018-02-27

How I Got Here (part 1)

I started out "programming hardware" using 7400 series TTL integrated circuits as a kid back in eastern Arkansas (in a little town you never heard of). Radio Shack was my Meca, Jerusalem, and Vatican City all rolled up into one, and my pilgrimages were many. I could do just enough math to use Ohm's Law so I didn't (usually) blow the epoxy caps off my LEDs. I didn't think of designing digital logic circuits as programming at the time, but that's exactly what I was doing, one bit at a time. Steve Ciarcia and Forrest Mimms were my mentors, thanks to the books and articles they wrote. So I breadboarded, soldered, and wire-wrapped the hours away.

No one had ever heard of a PC back then, and "IBM" was synonymous with business mainframes. (They've since retreated back to that market after getting completely pantsed by the "compatible" manufacturers.) While I'd seen articles about "home computers" in magazines. I hadn't really given them a great deal of thought. They were super expensive, and I wasn't running a business, though the games and fun (and laughably primitive) graphics looked kind of interesting.

One day at Radio Shack, having carefully exchanged my allowance for much-needed components, I was waiting for my mom to pick me up (way too young to drive). And there sat a TRS-80 with a 64x40 character monochrome screen and full-sized QWERTY keyboard ... and the user's manual. I plopped myself down and started in on the manual. The clouds parted. The angels sang. The Radio Shack guys knew me, so they let me "play." It turned out that all the wonder and majesty of boolean logic that I'd found so intriguing in the digital logic world was berried in that computer too! AND if you made a mistake, there was the most powerful thing I had yet encountered in my technical education up to that point: the backspace key. This was amazing! Boolean expressions. Conditional logic. Looping structures. They were all there! (Can you hear those angels yet?) It was awesome, and I was hooked.

Every visit to Radio Shack after that ended with another session at their demo computer. I talked to the sales people, some of whom did actually have a clue about what the computer could do. The programming language back then was BASIC, and it was wonderful. There was no operating system for the computer I was using. The BASIC interpreter was in ROM. (I hadn't heard of CP/M at that point, and DOS did not yet exist.) So any program you ran had, with the exception of handling hardware interrupts, the CPU's full attention. So I spent hours and hours making progress and mistakes and learning from both. My mom once apologized to the salesmen at Radio Shack, in case I'd been bothering them, but they assured her that I was no trouble at all and was actually taking to the computer very well. (I imagine they also had dollar signs in their eyes.)

One Christmas, my parents got me a TRS-80 Model I with Level II BASIC, and that was about all they saw of me for the next few years. I had 4K (not a typo) of RAM to play with, and play I did. I would surface for school and meals, but the computer was my life. I didn't have any auxiliary storage, so I recorded my BASIC programs on notebook paper and then typed them back in when I needed them again. (THAT will teach you desk checking.) I learned to type properly (the best course I ever had in high school), which helped, but I also saved up for a cassette recorder, which is what hobbyist used back then to store data. (See Frequency Shift Keying.)

After discovering that it was possible to construct string literals in BASIC that contained machine code and then jump to that code I was in Z80 heaven. The transition from BASIC to Z80 machine code was awesome. The speed-up from the ROM-based interpreter to code running directly in the CPU was amazing. I didn't have an assembler, so I was hand-assembling code and running that directly from the BASIC interpreter. I eventually got an assembler (on cassette tape), and things got a lot easier after than, but not before machine coding had taught me exactly how a microprocessor worked (at least from a programmer's perspective).