mirror of
https://github.com/opsxcq/mirror-textfiles.com.git
synced 2025-08-31 19:32:06 +02:00
272 lines
20 KiB
Plaintext
272 lines
20 KiB
Plaintext
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
|