Posts filed under "History"

September 29, 2009

Fujitsu Habitat footage on YouTube

Tomoko Kojima (aka Oracle Layza) found some video of very early Fujitsu Habitat interaction (on the FM-Towns) on YouTube:



I’m most struck by the whiplash discrepancy between the music and the action in the first clip. That and the way the Internet continues to cough up nuggets of wonder from the distant past.

Thanks Tomoko!

September 5, 2009

Elko I: The Life, Death, Life, Death, Life, Death, and Resurrection of The Elko Session Server

Preface: This is the first of three posts telling the story of Elko, a new old new piece of web server infrastructure that I’m releasing this week as open source software. Part I, this post, is a bit of personal history. There’s a companion technical story concerning the whats and the hows and the whys that’s fairly profound on its own. But though the technical story is intimately connected to this one, it’s got a very different narrative. The technical backstory is the subject of Part II, which I’ll be posting tomorrow, and a more detailed technical overview will presented in Part III, which will be up the day after tomorrow.

There is a significant piece of very cool software that, through circumstances largely beyond my control, I have come to write, from the ground up, three times. Consequently, it’s pretty mature even though it’s not. I will share the tale with you now.

Software incarnation #1 was done at the late lamented (no relation to whoever is sitting on that domain name today). It was a system called Passport that I created in 1999 and 2000 by transmuting the server code for The Palace into a general purpose server for stateful applications. It was actually the most financially successful thing ever produced (used as the basis for a project we did for Turner Broadcasting’s Cartoon Network, called CartoonOrbit), but wasn’t enough to save the company. crashed and burned and went off to the big IPO in the sky, ultimately filing Chapter 7 on March 5, 2001 (my 42nd birthday, Happy Birthday to me).

Unfortunately, there was not much we could salvage from the wreckage. The IP assets of ended up being taken over by one of our key investors as partial payment for a secured debt we had to them. However, they were neither prepared to do anything with the stuff themselves nor to talk business with anybody else who might want to make a deal for it. (A perfect fit to Carlo Cipolla’s classic definition of stupidity: A stupid person is a person who causes losses to another person or to a group of persons while himself deriving no gain and even possibly incurring losses.)

However, given our modest success with Turner Broadcasting, the survivors of felt there was potentially a bankable product here. Alas, as just described, we no longer had rights to the code. Consequently, this lead to software incarnation #2, which I wrote from scratch over the late spring and summer of 2001, based on some of the ideas we had in Passport and a few more we had come up with in the meantime. This was 100% original Java code (the Passport server had been written in C), that became the basis for the company that Doug Crockford and I started in 2001, State Software (which Randy also joined a few months later). The server and its accompanying client components became the State Application Framework, SAF. Whereas Passport had required the installation of a special browser plugin to do magic network communications things, SAF was entirely HTTP-capable and the client was Javascript running in an unmodified browser. This was an early instance of the kind of thing that is nowadays called Ajax, though of course nobody knew this at the time. (Basically, Crock and I can legitimately claim to be inventors of Ajax, along with people at probably 30 other companies at the same time who also invented it, though Jesse James Garrett gets the credit (and, let me hasten to add, in my opinion deserves it) because he managed to take the idea mainstream and gave it a cool name that stuck — kind of the way Columbus discovered America: lots of other people had discovered America before him, but after Columbus nobody else could discover it any more.) As it turns out, being alienated from the fruits of our labors at proved to be a blessing in disguise, since, in addition to being unencumbered from an intellectual property standpoint, the new server was vastly more capable, more flexible, more scalable, and phenomenally more robust.

State Software lasted about a year and a half before crashing at the end of the runway with insufficient fuel to take off. We were a couple of years ahead of the market and our financial backer found himself unable to sustain things. In this case, the guy was a money manager for another guy with a pile of money, but he turned out to be an amateur as a venture capitalist. Basically, he bet almost all the money guy’s money on a bunch of first round investments, embezzled the remainder, and left nothing in the tank to provide followup support for the few companies that had proved promising after the first year. State Software (and the rest of the investor’s portfolio) collapsed into a filing cabinet in some lawyer’s office somewhere. Feckless VC guy eventually went to jail. Once again, cool code that I had written vanished from my grasp.

Fastforward a few years and a number of colorful adventures later, and I find myself at Yahoo! along with Randy and Crock. Crock and I were pondering various Ajax-y things then being done at Yahoo!, waxing nostalgic, and thinking how cool it would be to have access to the State Application Framework for some of the more advanced community services we were then contemplating. After some tentative and unhelpful inquiries with the current owners of the assets about what it would cost to reacquire the rights (answer: for you, 1.5*$N, where $N is defined as the maximum you’d be willing to pay, regardless of who you are, a flagrant violation of Morningstar’s First Rule of Business if ever there was one), we got to thinking. Passport, software incarnation #1, had taken roughly two years. SAF, software incarnation #2, had taken about four months (well, plus lots of follow-on tweaking and enhancing over the life of the company, but basically four months for the central code). What if we just did it over again from scratch? We had our memories of what we’d done before, and we even had the API docs for SAF, which had been widely published. Sure, it’d be annoying to have to go through the bother, but how hard could it be, really? Well, for one thing, I didn’t have a mandate from Yahoo! to spend time on this, so it would have to be a personal time project. On the other hand, if it worked out I might be able to leverage it into some things at Yahoo! that would be way more fun than what I was working on at the time. So over the 2006 Christmas break I set to work on a project I code named Elko. (Digression: WorldsAway was initially named Reno; EC Habitats, AKA Microcosm, was initially named Lodi; the working name for the thing I’m currently doing at WeMade is Yuma. I’ve decided that my personal project namespace is seedy-western-towns-with-four-letter-two-syllable-names. I figure that with Orem, Ojai, and Moab I’ve probably got enough names to last for several years before I have to crack open an atlas.)

After two weeks of coding in what I can only describe as the most transcendent state of flow I’ve ever experienced, I produced software incarnation #3. Like the four month initial version at State, it was not the whole system (and I’d end up spending a fair bit of my free time over the next year doing the tweaking-and-enhancing thing), but it was the essential central piece. Crock and I came up with the idea of branding it the Yahoo Ajax Server (YAS). He did some client-side stuff to show it off and we set about trying to evangelize it to the company. There was some abstract interest, but planning lead times were such that projects were typically committed to a particular technical course long before hitting the problems for which this technology was the solution, at which point it was too late to reopen fundamental architectural questions. We found we needed to be talking to people at a much earlier stage in the product pipeline, and the months dragged on as we sought the ears of the right people. Then, in February 2008, a wave of cost cutting swept me (and Randy) out the door, an event that regular (such as it is) readers of these pages know all about. For the third time, I had created this piece of cool technology and then its shot at the big time had fallen to the vicissitudes of the business world before it made it into the hands of anybody who could actually do something productive with it.

Then one day a few weeks ago we were sitting around at WeMade thinking about real-time chat solutions for the community system we were developing, and I remember I’ve got this Elko thing laying around in my projects folder. We could just use that. And anyway, it’s good stuff, so I’ve decided to clean it up and make it available to everybody.

So, here it is. I’m releasing it to the world under the MIT license, in hopes it may prove useful.

February 17, 2009

FACT CHECK: Lucasfilm's Habitat in Rogue Leaders

Recently, GameSetWatch published an excerpt from Rogue Leaders about Lucasfilm’s Habitat which includes several new images and wonderful details.

Unfortunately, it also contains several factual and categorical errors that need to be corrected in the public record since this book’s account has already been used to incorrectly update Habitat’s Wikipedia page.

This article will block-quote the relevant sections of the book, followed by factual corrections marked as FACT CHECK: or commentary marked with either Chip: or Randy: as appropriate.

Q-Link, as it was known, undercut that price to around $3.60 an hour by renting out spare, unused server space during low-usage times.

FACT CHECK: The underused, and therefore discounted, resource was not servers, but off-peak packet-switching network bandwidth.

Through this partnership a deal was hatched to produce an online game, with Lucasfilm Games creating the front-end game — Habitat — on the Commodore 64, and Q-Link producing the back-end, server-side software.

FACT CHECK: Lucasfilm also developed a large portion of the backend. Q-Link, lead by Janet Hunter, did the stuff that had to interface with their system, but Lucasfilm did the game-specific stuff.

Designer Noah Falstein had been working with one of the team engineers, Chip Morningstar, on the game concept.

Chip: That’s a little backwards. The original concept emerged from a collaboration between Noah and me, but the design itself was mine. We were all peers with the same title, “Designer/Programmer”, with an equal emphasis on concept and implementation.

Randy: See Chip’s post on the beginnings of Habitat for a detailed account those early days.

The game debuted internally at Lucasfilm Games at a company meeting in early 1988.

It looked like Habitat was a huge hit-in-the-making, and so in the fall of 1988 the beta was taken to a New York nightclub for a launch party as Lucasfilm Games and Q-Link prepared to revolutionize gaming.

FACT CHECK: Summer and Fall 1986, after the game had first been shown to selected industry and press people at the Chicago CES in June.

Randy: Watch the Habitat Promotional Video and it’s copyright date for verification.

Essentially, if 500 users were so committed to playing Habitat that they remained online long enough to eat up 1 percent of the network’s entire system bandwidth, a full-run production that could attract Rabbit Jack’s Casino numbers could boost that bandwidth number to 30 percent. “The way the system was built, the server software wasn’t capable of hosting that population while still being successful,” recalls Arnold.

Ultimately, these business challenges caused Habitat to be cancelled after the launch party, but before it had gone into full production and reached retail shelves. It would simply be too popular, and the necessary server fix would be too expensive to make the project viable. And so this massively original, inventive, and cutting-edge project was shelved for U.S. release.

From a business perspective, however, Habitat wasn’t a failure. The game was licensed to Fujitsu for use on its FM Towns PC-like platform, and the successor to Habitat was recast (with several of the original planned features now cut) as Corpe Caribe, described as an online Club Med, where it enjoyed some success.

FACT CHECK: The shipped product was Club Caribe, not “Corpe Caribe”. :: sigh ::

Chip: While there were some performance tuning issues that needed to be addressed, the cost of operations was never really the issue. Statements about performance considerations were a face saving way of covering for the what Q-Link perceived as the real problem, which was marketing risk. Basically, the product was so weird and out of the mainstream that they didn’t think they knew how to sell it. In particular, for some reason they felt that people would be put off by the fantasy and science fiction elements. We argued that this defied everything we knew from the history of computer games, but they believed their typical user was far more conventional and unimaginative than the typical game purchaser.

FACT CHECK: Club Caribe was Habitat and it was released commercially by Q-Link. It opened in January 1988 with the name change and a different marketing spin. Literally the only difference between the original Habitat client software and the Club Caribe software as shipped was the title screen image.

Chip: Basically, Q-Link reworked the world database to remove any of the objects that had any kind of fantasy or science fictional flavor. The idea was to make the world seem more ordinary, pitching it as a virtual resort. Notably, they didn’t use any avatar heads that were non-human.

Chip: Over the course of the first six months of operation, as they grew more comfortable with their users, all these pointless restrictions were eventually abandoned.

The licensing to Fujitsu for the FM Towns happened a couple years later.

Chip Morningstar and Randy Farmer, the two programming gurus who had built the system infrastructure

Chip and Randy: That’s a slight mischaracterization of our role. While we certainly programmed it, we think it’s more noteworthy that Chip designed the whole thing, and Randy ran the world. Both the design itself and our operational experience with it are arguably quite a bit more important to the historical significance of Habitat than was its implementation.

Randy: Well, except that we managed to get a virtual world client shoe-horned into a 1-megahertz, 300-baud, 64k-memory computer with a 165k floppy disk! Certainly not a fact of wide ranging repercussions, but still pretty damn impressive.

December 28, 2008

Interview about building Lucasfilm’s Habitat (LONG!)

Chip and Randy Talk About The Development of Habitat for QLink from Jeri Ellsworth on Vimeo

CircuitGirl/Jeri Ellsworth posted a video interview with Chip and me back in November about the making of Lucasfilm’s Habitat/Club Caribe for the QLink service during the mid-late 1980s.

Warning:– it’s and hour long, and the audio goes a little wonky a bit through. Oh yeah, and I mispeak about my first project with Lucasfilm Games – it was Koronis Rift, not Rescue on Fractalus – I was running on 5 hours sleep over two days at the time…

December 2, 2008

Mud/Moo/Virtual World Pioneers Panel

Richard Bartle, Randy Farmer, Pavel Curtis

Raph Koster, a first class pioneer himself, posted a set of pictures of Richard Bartle, Pavel Curtis, Brian Green, himself, and myself taken just before the pioneer’s panel at Living Games Worlds. First time we were all in one place. I knew them all, but Bartle and Curtis had never met!

We all missed having the real brains behind Lucasfilm’s Habitat there: Chip Morningstar. Hope you’re feeling well buddy, and I hope you like how I covered our spot. :-)

October 20, 2008

Chip and Randy @ Living Game Worlds IV 12/1-12/2

Registration is now open for

Living Game Worlds IV – Interplay: Multiplayer Games and Virtual Worlds

December 1-2, 2008

Georgia Tech

Technology Square Research Building

85 5th Street, Atlanta, GA

Step in to the vanguard of digital gaming at Georgia Tech’s 4th annual Living Game Worlds symposium to be held December 1-2, 2008. Raph Koster and Chris Klaus headline this year’s conference which will showcase “InterPlay,” networked online play and the rapidly-growing domains of multiplayer games and virtual worlds. The symposium will also feature a pioneers panel including luminaries Richard Bartle, Brian Green, Chip Morningstar, Randy Farmer and Pavel Curtis. Also, don’t miss the chance to see the latest demos from Georgia Tech’s Digital Media Program, EGL, and GVU. Early registration ends October 31. Register now at

Media Inquiries:
All other Inquiries:

[Please Circulate]

August 10, 2008

On Language – Avatar –

Lucasfilm's Habitat Promotional Video

With the coverage in the NYT – I thought people might like to see what the original avatars looked like – here’s a promotional video from 1986:

Lucasfilm's Habitat Video Link

Funny what has, and has not, changed in over 20 years.

May 19, 2007

Second Life History: The Jessie Massacre

Or: The first deployment of user-created WMDs in a 3D virtual world
As told by the perpetrator, Oracle Omega

My first impression of Second Life was formed when it was still under development, when Phillip came to visit Chip and me at our third little startup: State Software. Technically, it was pretty amazing. They’d finally created an extensible, programmable world with physics built right in. On the social side the model was that everyone would live and build on one of a few large continents. We cautioned that this would be fraught with peril. Even before the first beta testers arrived, they’d been warned that their biggest problems were going to be property encroachment, bad neighbors, and script-griefing. Alpha World had demonstrated that many of the neighborhoods would be something between garbage dumps, billboard farms, and smutty slums next to some amazingly creative and wonderful stuff. Much of the predicted chaos happened during beta, but the full force wasn’t felt until broader release, especially when anyone could join instantly and for free.

I happened to be unemployed during late alpha and early beta, and had been so intrigued by Second Life that I decided to run some experiments, pushing the limits of what how I thought future users would abuse the system, specifically property rights and scripting capabilities. As I’ve written elsewhere, regular beta testers normally don’t push the limits as much as we’d like them to because they fear losing their status as testers by being ejected.

Having co-created several of the progenitors of this type of system, I knew where to look for cracks. I had no fear of being ejected for taking the servers down. On the contrary, it was an explicit goal. Better now, during testing, than later with paying customers.

Probably the most legendary of my experiments was the Invisible Teleporting Grenade of Death. Nothing special compared to the offensive and defensive objects in Second Life today, but it caused quite a stir during beta because it was the first known deployment of a user-created Weapon of Mass Destruction in a 3D virtual world.

Note: This wasn’t the first programmable world I’d done massive damage to: Years earlier, after a certain Wizard on LambdaMOO decided to show-off and summon all the food in his world to our room for a food-fight, I was inspired to write a script that would summon all instances of any class into the room with me. I tried on it Class:Paper, and it worked perfectly , first try. It was at that moment I realized I had no way to put the paper back where it belonged! I quickly wrote a script that stuffed the paper into the pockets of their owners and reported this flaw to another Wizard. She was not happy.

During the Second Life beta test, its initial culture was starting to emerge. In my experience, worlds like this one attract early adopters of a somewhat democratic-libertarian bent – “Lets just all get along” and “Leave Real Life rules behind” often reflect the mentality of the most vocal users. But, something unusual happened this time – another virtualworld, called World War II Online, was failing and its 1940’s role-playing refugees migrated to Second Life, en masse. Since it provided for personal combat (hit points), death (teleport you home), and you could build just about anything, including weapons, it seemed like an ideal fit. Quickly they’d built up WWII cultural and military items, including Nazi uniforms, gear and propaganda, including flags and posters with Swastikas and the like. Eventually they took over the only remaining full-combat enabled simulator [patch of land], named Jessie, and made it their home.

A WWIIOL emplacement in Jessie

This ticked off many members of the existing community, who detested all of the pro-Nazi imagery. The WWII online-ers said they just wanted to be left alone to play their war games. Both sides were sniping at each other, both literally and with virtual weapons. Eventually there was a huge wall constructed separating Jessie from its neighbors. It didn’t help.

I’d built and run too many worlds and had seen this kind of thing end badly so many times that I just stayed out of it. Honestly, this was the kind of thing I’d warned about from the beginning and I just wanted to see what would happen.

Until the day I’d completed my latest experiment.

I’d been working with the object spawning directives in the scripting language. I’d also discovered that I could make an object very small (less than an inch in diameter), and very transparent (virtually invisible). It struck on me that I could make a weapon of mass destruction and do it very cheaply. It worked like this: a tiny invisible floating grenade that would explode into dozens of invisible tiny fragments flying outward spherically at maximum velocity and doing maximum damage and then immediately teleport itself to another random location in the simulator. It would be undetectable, unstoppable, and lethal: The perfect killing machine. It could only be stopped by me shouting the keyword: STOP!

Small-scale tests on my land were successful. It fired up to 100 rounds per minute. But, where could I test this at full scale? There was only one answer – Jessie – the only Sim with an active population and the fatality flag on. As a special guest beta tester I had 30 minutes early access to the servers, so I dropped six of these little gems in Jessie just before opening time, they wouldn’t have a chance to catch me. Back then, each object spawn cost $L10, so my balance indicator started fluctuating wildly as the invisible fragments spawn, flew, and eventually hit something or someone.

I flew to the simulators with the most users and tried to chat naturally, but it was difficult, knowing the chaos that was going on in Jessie when people arrived: Log in, poke around awhile then seem to randomly die, get teleported home, which is also in Jessie, wait a short moment, repeat!

After about a half hour, people around me were starting to say “Wow! Someone is slaughtering those WWII guys in Jessie!” “That place is in a panic!” “That guy’s my hero!” “Lets go see!” The grenades were working. Besides making my point about the scripting language, I’d created one of the first legendary events of the world. That was exciting.

But, only then did I realize I’d chosen sides in a fight that I didn’t really care about. I wasn’t really sure what to do at that moment, when I got an Instant Message from one of the Lindens: “Did you release an auto cannon in Jessie?” I had to be a smartass and answer: “No. I released six. I’ll go and deactivate them now.”

I flew to the edge of Jessie and shouted the keyword. My balance meter stopped jumping around and stabilized, the attack was over. It had been well over an hour since opening, and I was certain that I had the highest kill rate in Second Life history. But now I had a problem. I had no way to extract them (and I wasn’t about to enter Jessie at that moment anyway – I was certainly Kill On Sight at that point, assuming they knew the name of the bomber.

It turned out that my grenades were too small and invisible. Though they were now inert I couldn’t find them to remove them. In effect, they were a dormant virus in Jessie. So, I filed a bug report: “Unable to select small, invisible objects.” The in next day or two there was a patch to the client to “show transparency” so that it would be possible for me to see them, select them, and delete them – which I promptly did. But the legend remains.

In the end, very little was done to mitigate the design of WMDs like mine, and I was told that to “fix” the problem would put serious limits on the creativity of future users. So be it. But, given the history of the service since then, with so many sim-failures based on malicious and accidental infinite spawning scripts, I’m not so sure that ignoring this problem was the best choice. I hope it is not too late.

January 2, 2007

Archive Repost: Second Life in Fall 2003

[The MUD-DEV archives have been offline for several years and I know some folks have linked to the following post (and now have dead links). Since I re-tell parts of this story often, I thought I’d archive it here for posterity. There is no special meaning to me re-posting it now.]

From : “F. Randall Farmer”
To : “Discussion of MUD system design, development,and implementation”
Subject : RE: [MUD-Dev] The State of Play: On the Second Life Tax Revolt
Date : Tue, 23 Sep 2003 23:12:33 -0700

Monday, September 22, 2003 8:16 AM, J C Lawrence said:

> The State of Play: On the Second Life Tax Revolt Posted by James
> Grimmelmann on Sunday, September 21 @ 19:11:48 EDT Governance

I couldn’t let this one go without comment:

JC quotes a rather lengthy article attempting to tie a “tax revolt” in Second Life to an emergent democracy. As a long-time beta tester of Second Life (and a a User Experience/UI design contractor a few months back), I’d have to say that it is all much ado about nothing. The ‘protest’ was neither widespread, nor was it as ‘intense’ as as it could have been (see below). Virtual Press photos had to be re-enacted for the staff-written newsletter and the vast bulk of users didn’t know it had happened until he wrote about it, days later.

Specifically, Grimmelmann said:

> Other than quitting the game entirely (the threat which lurks
> behind all such protests), a street party is just about the only
> action you can take that will even come to the attention of the
> authorities.

This is an understatement of some scale for all systems, but especially Second Life.

A protest party is pretty much the _easiest_ action you can take in SL.

I personally (along with many others) have generated significant attention and action from ‘the authorities’ (and fellow citizens) using the built-in scripting, object creation mechanisms, and persuasive reasoning on the game Forums.

During beta, I built an invisible teleporting auto-cannon that fired 100 invisible rounds per minute and unleashed it in an area of WWII Online folks who had been at ‘war’ with my clan. It killed hundreds for about an hour before I was asked by the ‘authorities’ to remove it. Changes were made so that invisible objects can be seen in authoring mode.

After release, I created a world-touring, talking airship ALA Blade-Runner. Logs indicate that thousands of people had seen and interacted with over a two month period. It became well known, and the subject of some debate. This airship (along with various user-run air taxi services) often became ‘stuck’ over people’s land because of a mis-tuned property feature. One good rant posted on
their forums stating a rational case and citing Lawrence Lessig citing the Supreme Court’s decision in US V. CAUSBY and the problem was fixed in the next build. [See full post for excerpted discussion thread.]

And I’m not even close the most skilled or prolific scripters/artists/politicos on that system. Though my personal reputation may have helped convince the authorities in the case of the airship right-of-way discussion, that serves to reinforce my point: Well considered and executed individual action often facilitates change more efficiently than any mob-party.

Honestly, the Tea-Party in Second-Life had little in common with the historic event: Destroying ships and tea did real financial harm to the King of England (and loyalist businesses). The tea crates in the SL protest were bought and paid for by the protesters, who were taxed for them anyway. On the other hand, those few who tore down the structures that they knew Linden Labs liked to visit during their press demos (thus removing value from the system) were closer to those great American terrorists of old. :-) They were few and far between.

Most of the tax protesters aren’t all that serious. They aren’t en-mass taking the actions that would cause a change, because it isn’t that important to them. It is a street-party because they’ll keep playing even if the tax structure doesn’t ever change.

So, asserting that a real-time ‘street-party’ protest within a virtual world is the most effective form of facilitating change we can hope-for/expect is a supposition that I think deserves serious challenge. Users can (and will) do so much more.

The so-called Second Life Tax Revolt is a bad example of ’emergent governance’ for the reasons stated above: Taxes don’t matter enough for the users to do anything significant, even though they have the power and the skills.

Randy [September 23, 2003]

»» Archive Repost: Second Life in Fall 2003