EXCERPT FROM: "Proudly Serving My Corporate Masters: What I Learned in Ten Years as a Microsoft Programmer" by Adam David Barr Special Permission given to TEXTFILES.COM to reprint Chapter 14 Visit the Official "Proudly Serving" website: http://www.proudlyserving.com (c) 2000 Adam David Barr In the fall of 1981 my father brought home a line terminal and a modem. The modem was an acoustic coupler, meaning that after dialing the phone by hand, you would insert the handset into two padded collars on the modem. The collars would seal around the mouthpiece and speaker, more or less, insulating enough outside noise that communication could happen over the phone line. The modem would transmit tones out the collar that the mouthpiece was in, which would be picked up and transmitted over the phone line. Sounds coming in from the phone line would be transmitted out the speaker, and picked up by a microphone in the other collar of the modem. The contraption had a Rube Goldberg feel to it-in particular, if you put the handset in reversed 180 degrees, it wouldn't work. It also assumed that your phone was a standard-order Bell one with big round mouthpiece and speaker parts connected by a thin handle; otherwise it would not fit into the collars correctly. Luckily that was all most people had back then. You would dial in to another computer using the modem, much like the way you connect to an ISP today. At first we dialed in only to the main computer at McGill University. Instead of all the capabilities of a Web browser, all you had was text on the line terminal. Each connection would start with the computer prompting you for a command, which you would then enter. The computer would then print the results of that command, and then prompt you again, and so on. The acoustic coupler modem we had ran at 300 baud, which was standard at the time. That is nearly 200 times slower than today's 56K modems. 300 baud translates to about 30 characters a second, which means that a single line of 80 characters would take almost 3 agonizing seconds to print out. Some more advanced systems supported 1200 baud, considered quite speedy, but at that point you had to be concerned about whether your phone handset fit snugly enough into the modem. In the fall of 1983, a year and a half after my family got our computer, I found something new to dial in to-an online community that was thriving in Montreal. This was a group of computer bulletin board systems, or BBSs. They were way, way, primitive combinations of today's Internet email and newsgroups, with the emphasis on "way, way, primitive." You connected to a BBS using a modem, much as home Internet users connect to their service provider with a modem. However, most BBS systems had only one phone line; if someone else was connected, you got a busy signal. And people tended to stay connected for a while, because of the difficulty of getting in. This could be quite frustrating, especially since the first acoustic coupler modem we had did not dial the phone itself; you had to dial the phone by hand (and our home phones were rotary dial, not touch-tone), then when you heard the phone ringing, you would stick the phone into the acoustic coupler and wait for it to be picked up by the computer on the other end. We soon got a modem that could dial itself, but you still had to repeatedly tell it to dial, then wait to hear if the phone was ringing, and if not, tell the modem to hang up and start over. There did exist hardware that would redial automatically (known among other things as "demon dialers") which other BBS callers owned-which made it even harder for us poor normal dialers to get in. But we did keep trying, and eventually would get connected. What awaited us then? Not much that would keep a current World Wide Web user awake. You were connected only to the specific BBS you had dialed in to; to get to any other, you would have to disconnect and start repeatedly dialing the number of the other BBS. The BBSs were designed to work on line terminals, so they had no graphics, just text scrolling upwards. The system was built around "bulletins," which were like messages on Internet newsgroups (bulletins were referred to, apparently with no trace of irony, as "bulls"). After entering your logon id and password, you would be prompted with a main menu, each item identified by a single letter. So you might choose "S" to scan the existing bulletins, "P" to post a new one, and "E" for electronic mail. Each bulletin was identified by a number; you read one by entering the number in response to a prompt from the BBS. Email was similar to bulletins, except it was visible only to you. If you selected the "E" option from the main menu, a list of the emails in your inbox would be shown, and you could view or delete them by number. You could also post bulletins, or send email to other users. Because you were the only one logged on to the BBS at this point, nobody else was going to post or email until you disconnected and hung up the phone. Thus, bulletin conversations or email exchanges could take a while, since one person would post or email, then would have to check back at some point in the future, and hope that the other person had been able to log on and respond in the interim. To keep things fair, the systems would usually have a time limit for a single user to stay logged on, after which they would throw you off (30 minutes was typical). There were also limits on how much email you could have in your mailbox (something really low, like 5) and how many bulletins you could post in a single session (again, a really low number like 2). Despite all these restrictions, the result was incredibly compelling. What would the bulletins be about? Basically the same things people talk about today on the Internet, except that back then there was a significant computery tilt to everything, since few non-techies were active on the BBSs. A lot of the talk involved computer games, and trading pirated games for other pirated games. Discussions about programming and computers for sale would be mixed in with arguments about politics and sports. People would post intentionally annoying nonsense. Flames would be sent, in public and in email. The current online culture and the "netiquette" that governs it have their roots in these primitive systems. We even had in-person get-togethers of BBS users (which I went off to-tra-la-la-without even thinking of the ominous possibilities involved). Today people flit through the Internet and email, and this archaic stuff sounds dull. But the key is the ability to interact with people with similar interests whom you never would have met otherwise. This exists even if you are calling in at 300 baud on a line terminal and the people you talk to all live in the same city (there were bigger BBSs with multiple lines in other cities, but since it took a long-distance call to reach them, the people who did tended to be those who knew how to illegally make long-distance calls for free-which was one of the main subjects discussed on those BBSs). Later on, I remember reading Wired magazine back in 1994 and it would sometimes print a URL and would have to emphasize that you needed a Web browser to view it-something that would be completely unnecessary today. But Wired was already in its second year of publishing back then, because the essential coolness of all this predates the Web browser. If you go into an Internet chat group today, you get a fairly standard cast of characters-a few people having a serious conversation, a few people asking where everyone else is from, someone who ritually greets every new entrant to the chat room, and someone who is typing in the lyrics to a song by some obscure rock group. If you imagine this same chatter stretched way out across the time it takes every participant to get through to the BBS, you have a pretty accurate idea of what the environment was like back in 1983. There were a series of these BBSs in Montreal, with names like Micro-Dial, Omega Online, and SABATION (let history record that SABATION was an acronym for System Accessible Bulletin and Telephone Input Output Network, except that both "accessible" and "bulletin" were misspelled in the introductory message that announced this). The various BBSs were silently ranked by participants in terms of how cool they were, which meant how interesting the other users were, and the quality of the pirated games discussed on them; being cool also meant that the phone was busy more. But it was hard for a user to keep current on more than a few BBSs, since it could take an hour or more to get through to any given one. I had a list of three or four that I would connect to regularly; I would start out dialing each of them in a round-robin way, until I got through to one. Once I had reviewed any new bulletins, posted any I felt like, and handled my email, I would hang up and start dialing the remaining ones in my list, until I had hit them all, or my parents threw me out of their bedroom (where our computer was set up). This attribute of a BBS-that I would go to the effort to try to keep current with the bulletins and email-is today referred to as "stickiness." Because this was Montreal, there were some primarily French-language BBSs also, although there was opposite-language posting on both the English and French systems. And it should come as no surprise that there was a BBS called Compu-Sexe, although if I ever managed to get on to that system, I cannot recall the shocking depravities that were visited upon me. I was probably too chicken to call, since I was under 18 at the time and never knew when my parents would walk in. There was also a service available in Montreal called Datapac, which allowed users to dial in to a single local number and then be routed over a network to other computers that were also connected to Datapac, or to Tymnet, the U.S. equivalent. This was similar to calling an ISP today (Datapac was a commercial service and had multiple phone lines coming in). However, there was no equivalent to Web pages; you would use Datapac to connect to a given computer that you had an account on, or perhaps, to connect to a computer that you were trying to break into. The computers were identified by numeric sequences, similar to phone numbers, which were assigned by Datapac. Almost all computers that you would connect to required accounts because they would charge people for time connected; Datapac also charged people for the time they were connected over Datapac. The local BBSs were small operations run out of homes, using a single phone line and computer. Not much of a computer either; a typical system was an Apple II (or clone) with 64K and two floppy disk drives. Although BBS operators (who were known as "sysops," for "system operators") would occasionally ask for donations, BBSs were basically free, the main benefit of running one being that it made you a hep cat in the local BBS scene. Some of the BBSs were not even available 24 hours a day. Some were only available during non-work hours, presumably because they were being run on someone's desk at work. Some were unavailable during the evenings, when the owner of the phone line was using it to connect to other BBSs; and some were unavailable during the night, when the other inhabitants of the house didn't want the phone to ring. One way that BBSs tried to distinguish themselves and attract more users was by putting up their own content. So in addition to the universal S, P, and E choices, the sysop might add J for jokes, or K for his analysis of Kierkegaard. One of the more impressive examples was a game called Genocide II. Since anyone could play fairly slick games on their home computer, the challenge for a BBS game was to take advantage of the multi-user aspect of the BBS, without being hampered by the fact that only one person was connected at a time and the entire interface was line-terminal based. Genocide II consisted of a world where every player had a spaceship, which was at a certain location in a galaxy. Each day, every player could enter four moves, where a move was a single operation such as changing course, changing speed, firing torpedoes at other ships, or reallocating energy to shields (the terminology for the game was based on "Star Trek"-there has always been significant overlay between the worlds of computer mavens and serious Star Trek fans). At a specified time of day, let's say midnight, all the moves that all the players had entered that day would be processed simultaneously by the computer the BBS was running on. Any time in the next 24 hours, you could connect to the BBS, see the results of the previous day's moves, and enter your four new moves. If you could not sign on in a given 24-hour period, you would effectively forfeit your move, giving the other players an advantage. The object, as you would expect, was to be the last ship left, at which point the game would start over. There were also games played among users via email; an occasional game of (very slow) chess would break out, and I recall an attempt to organize a game of the strategy board game Diplomacy on a BBS, although I don't think it ever worked out. I turned my friends Avi Belinsky and Val Bercovici on to these bulletin boards. Val had an Apple II clone in his room, something called a Golden II+, which was so junky we had to insert Lego pieces under the keyboard to make the keys function-but it worked. By the summer of 1984, right after we all graduated from high school, Val's father had gotten tired of us monopolizing the phone, and had a second phone line installed for Val's personal use. The three of us decided to run our own BBS on Val's computer. The only hardware change we had to make was to have a chip on his modem updated so it would support answering the phone (most modems at the time only supported calling out). We got this done through someone a year ahead of us in high school, who was a known figure in the Montreal BBS scene. The rest of Val's hardware, although basic, was adequate for the task-in the world of Apple II computers, the gap between a low-end system and a souped-up one wasn't that great. In any case, the fact that conversations would be limited to 300 baud would hide the limitations of the hardware. We needed BBS software also, but that was easy to get. The source code to a standard BBS program called "Networks II" was floating around; most of the BBSs in Montreal were based on it (it originated the well-known choices of S for scan, P for post, and E for email). Networks II was written in Apple Basic. It was a fairly trivial matter to modify the program so it welcomed callers with whatever name you chose to give your BBS. We called ours Transylvania, because Val was Romanian. We decided to go a bit further and add on some features not included in the basic Networks II code we received. These "features" were things that today it would seem laughable not to support: being able to email the author of a bulletin you had just read with one command (as opposed to remembering who wrote it, exiting the scan mode, and going into email mode), or remembering which bulletins each caller had read, so the next time they could be given the option to scan only unread bulletins (without this, they would have to remember on their own). In fact those features were then in vogue among Montreal BBSs, and most sysops had added them already, each presumably making his own separate modifications to the source code. In retrospect this situation was crying out for something like the open source community of today. The Networks II source code was freely available. I have no idea who originally wrote it, or what the royalty arrangements, if any, were supposed to be, but back then nobody worried too much about things like that. Everyone was busy hacking it up to improve it-what was missing was some way to fold those changes back into a common source code base that could then be redistributed. This wasn't due to any sense of intellectual property or not wanting to share your work, the idea simply never occurred to people, probably because there was no easy way to manage such a project and transfer the code around. With no Web pages and everything happening at 300 baud, it would have been too difficult to stay up to date. Eventually we got all our improvements working and fired up Transylvania, but it never got very popular. We had to limit the hours it was open, to give us some time to call BBSs ourselves. In any case the BBS market was fairly saturated, given the small number that any one user could "stick" to, and the cool features we had added only brought us up to par with the other systems. Our most ardent user was someone who claimed he could crash our BBS at will. Unfortunately, when we dared him it turned out he was right. There wasn't a lot a high school student in Montreal in 1984 could do to prepare for a career as a programmer. Our high school offered one class with the grandiose title of "Introduction to Computer Science," but it involved writing BASIC programs to do things like sort numbers-the kind of thing I had taught myself by logging on to the McGill mainframe. The only computer this class had access to was the central school board computer, dialed in to with a terminal sitting in the classroom. Each student would enter his or her program on punch cards, filling in little bubbles like an SAT answer sheet. The student would hand the cards to the teacher, who would scan them in on a punch card reader connected to the terminal. The teacher would run the program; if there were any errors, the student would make note of them, then go off and fix up the punch cards and wait for another turn to run the improved program. The reason for the punch cards was that the class was not allowed to use any storage on the school board computer, and the terminal itself had no storage. So scanning in the punch cards allowed each student to repeatedly simulate typing in the program really fast; after it was run each time, it was deleted from the system before the next program was scanned in. Occasionally, if there was only a small error preventing the program from running, the teacher would make the correction right away and re-run it, rather than sending the student away to fix the cards and wait for another cycle through the class. During the spring of my senior year in high school, we got the chance to go on "work study" programs to investigate careers. I signed up for one in computers. It turned out to be at a phone company. I was apprenticed, such as it was, to a tape operator, working in the room where the mainframe computer's tape drives were-those large reel-to-reel tape machines that you see whirring in computer rooms shown in any movie made between 1960 and about 1987. The mainframe did not have much hard drive storage; instead, user data was almost all stored on tapes, which were stored on reels. Someone logged into the mainframe from a terminal elsewhere in the building would decide they needed the data that was on a specific tape. They would send a message that would show up on a display where the tape dudes (and their apprentice tape dude) were sitting, and we would scurry off, find the tape (they were all identified by numbers), mount it on one of the tape drives, and hit a key indicating the tape was ready. It's funny because when Avi and I were about twelve we would tell people that we wanted to be "computer operators" when we grew up. I think we had something a bit more glamorous in mind. Luckily, I already knew there was a bit more to a career in computers than what I had seen there, and I got to escape after a few days when my work study time was up. The work we did on Transylvania that summer is a lot closer to what I did at Microsoft than anything I learned in school, even in college. You have some piece of existing code whose author is unknown; you and a few other people have to figure out how it works on your own and add some features on a deadline. The result may not be the most elegant code, but it works. In the end, you throw it all away after a few months. If I had decided to punt college, I could likely have gone to Microsoft in 1984, shown my work on Transylvania and the games I had written for the IBM PC, and gotten a job as a developer. How many people in 1984 could say they had over two years of programming experience on an IBM PC? - Adam Barr (c) 2000 Adam David Barr