Courtesy of Piaw Na (Lachesis) Well, I first started work on TinyMUCK sometime in February 1992, after playing around with TinyMUCK 1.1 by Stephen White and Jim Aspnes. At that time, I was involved in a few MUDs and trying to build a virtual movie theatre, one that would scroll by as you sat in it. Unfortunately, it was a real problem --- the only way to watch a movie was to link up a bunch of rooms and have someone type a command to go from one room to room. The problem was that if you were watching a movie, you didn't get to talk to anyone else who was also watching the movie, since they were all in different rooms. I wanted a programmatic interface to do that, so I brought the TinyMUCK code over to look at it. I'd also asked around to see what everyone else was doing, and Stephen White was also working on a new MUD, as was Jim Aspnes, and both of them would be user programmable. The problem was that everyone else had a second-system syndrome --- they'd keep designing and redesigning in an attempt to get the "perfect MUD", and nothing ever would get written. I was a lot less ambitious --- I was a college sophomore, knew next to nothing about parsers, compilers, or interpreters other than that magical introductory class "Structure and Interpretation of Computer Programs", and decided it was time I bit off more than I could chew. TinyMUD was actually very well designed. It was broken up into modules that were easy to understand, though comments were sparse, I found that more helpful than the usual scabs of unhelpful comments found in other code. It was modular enough that when DEC people tried to port TinyMUCK to DECnet, it took less than 2 weeks. I picked a language that was easy to parse and write a compiler to: "forth". I then mutated it beyond recognition, and wrote a compiler for it, then a stack-based interpreter. Everything was done opportunistically, for instance, other objects could be called because it was convenient to code that into the interpreter. The security system was a mess until Jon Blow of Berkeley wrote down the rules and I coded them. Jon also helped by developing a macro system for MUF (MUCK Forth). Jon was quite an incredible person, as he managed to learn C by reading my code. That anyone could learn C at all is impressive, that anyone could read my code at all was also impressive. So Atlantis, the first TinyMUCK (experimental) came up in March or April. Little did I know what I'd done. TinyMUCK started taking up more and more of my free time. I remember sleeping over at Bellcore (I was a coop intern at that time), and the next morning my manager was showing a new coop around. "We're a research organization," he said, "no deadlines, no schedule pressures, and so we're more relaxed than in industry." Then he stepped into my lab and turned on the lights. I'd spend the night before trying to debug a particularly nasty problem. (It was a null-pointer free in the string manipulation code in the engine, and was impossible to trace --- "purify" would have solved that problem in seconds, but this was 1990, and there was no "purify") I was sleeping in my sleeping bag under the desk, and when the lights went on, I got up, and looked at my watch, and said, "Oh no, it's 8 o'clock already!! I've got to take a shower!" My manager and the coop both stared at me hard. By mid-July, Atlantis was popular and loaded the Bellcore gateway to an incredible level, and I started putting it on the night schedule. Of course, it caught the attention of senior management that many people were telnet'ed to that machine, and I got a bunch of questions about it. I fielded them all, and managed to keep TinyMUCK up and running. At that point, Atlantis was running at high capacity, objects were taking up lots of space, and the users numbered well into the hundreds. It was also beginning to gain attention because of one important thing: it was backwards compatible and painless to switch to MUCK from an already preexisting TinyMUD or TinyMUCK. That probably had more to do with TinyMUCK's popularity than the programmnig language, the stability of it, or the popularity of Atlantis. Incidentally, throughout all this I was known as "lachesis". It was entertaining because I ran several characters in Atlantis of both sexes just for fun. Sometimes I'd play 2 characters at once, since I'm a very fast typist. Yes, my female characters got propositioned, and no, "lachesis" as a well-known programmer (female) wasn't. Part of it was that she was a bit aloof, and part of it seems to be that female programmers are supposed to be ugly, I don't know. I seem to be a good enough role-player that people are pretty convinced that they know me. I finally shutdown Atlantis in August 1990, when I left Bellcore. I swore off MUDs entirely --- I'd heard of too many people dropping out of school, and burnt way too much time programming it. Others (like Robert Earl of UCSD) had agreed to take over the code and maintain it, and still others were critical of my design (not aware that they were criticizing the work of someone who wasn't even legally allowed in a bar at that time) or code, though some guys at Unipress thought a few techniques used in the interpreter was interesting and incorporated it into Unipress Emacs. (I received no money for that, but I didn't mind --- it was a fun project doing TinyMUCK and I learnt a lot) The biggest benefit I gained from TinyMUCK (I didn't spend all that much time playing it --- about 80% of my time was spent debugging, integrating changes, and writing new features, so you can guess I spent *a lot* of time on it) was the learning process of building a product for others to use. Certainly, after that, school projects seemed incredibly easy by comparison. It was a great thing to have on your resume, too. Other questions? Piaw