RSS

On January 1st 2001, we move into our new home. Life is good. I’m now working on programming full-time. I’ve got a nice quiet home office. The Virtual Mall project is still going, but I’m no longer working on it full-time.

The Virtual Mall

My daughter Rachel, enjoying her new yard.

Mike – my successor – manages to negotiate a change to the design of the mall that’s more in keeping with the strengths and weaknesses of our engine.

This is actually good for the project. Those first few months of frustration and ghastly decisions had broken my will. I had been working on a project I didn’t believe in and didn’t care about. I never would have tried to negotiate a change to the design with Mr. Business because – based on my previous rejections – I didn’t think anyone would listen. Mike doesn’t have all of that baggage and he wasn’t present at that initial meeting where nobody wanted to hear “no”, so he’s willing to be candid about his concerns with the design.

I don’t know why John Business was willing to listen this time around. Maybe the cresting wave of the dot-com surge has scared him enough that he’s open to feedback. Maybe Mike persuaded him using superior social skills. Maybe Mr. Business has tried to use the product himself and realized the truth on his own.

Mike manages to push through countless changes. The can-of-beans design is gone. The strenuous effort to mimic the faults of the real world are abandoned. The mall space is scaled down to make the open areas less annoying to traverse, and the store space is expanded to make the aisles less claustrophobic and maze-like. The “all glass” motif is swapped out for something realistic and modern. The project ends up looking like a conventional upscale urban mall. By the graphical standards of the day, it’s gorgeous.

Normally I’d be upset if months of my work were thrown away like this, but in this case I’m delighted. I’d rather my contribution be erased than have the project roll forward with that terrible design.

Also, Mike’s efforts drive home just how much faster he is compared to me. He completes his re-designed mall in about half the time it took me to make the originalIn my defense, his conventional design was able to draw from our existing library of standard objects, and he’s able to re-use quite a bit of the store interiors that I designed. But he’s still running circles around me in terms of artistic output.. Not only is he faster, but his work has a certain aesthetic flair that I’ve never been able to achieve. I probably should have migrated to coding ages ago.

The Best Job Ever

There`s no way to convey the sheer joy of making a really well-designed program, so here`s a picture of blurry source code. I`m pretty sure this is a snippet from the Good Robot codebase.

Moving to coding hasn’t gotten me away from the project, of course. But now it’s much less all-encompassing. When I was making that gigantic glass can of beans, those assets were only ever going to be useful for that one project and did nothing to enrich the platform as a whole. But when I’m coding new features to support the mall, those features automatically become available to our general userbase.

For example, these days I’m working to figure out how the user can examine the products on the shelves using their sad little 800×600 monitors. The solution we’ve come up with is to give builders the ability to tag certain objects as “examine-able”. If you click and drag on the object, you’ll be able to turn it over and look at it from different sides. Optionally the object can be moved in front of the camera, to make it easy to see very small objects.

This is a good example of a feature that sounds simple in a meeting but immediately becomes complex when you try to implement it. Like, how fast should the object rotate when the user moves the mouse? The naive assumption is that you can simply use the existing mouse sensitivity settings and turn the object in the same way that the user turns their head when moving around. But now that I have a working demo to play with, I can see it feels wrong. It turns out that it really depends on the size and distance of the object. If you do “one speed for all objects” then large items (perhaps you’re examining something automobile-sized?) feel like they’re spinning out of control, while tiny objects can feel too slow.

Or to put it another way, it sort of “feels” like you’re reaching out with the mouse pointer and grabbing the closest part of the object. That bit of geometry that you grab ought to move at about the same speed as the mouse cursor. So when figuring out rotation speed, it really depends on how much of the screen the object fills.

If the object is moved in front of the camera for examinationYou can picture this as the user holding up the object in front of their face., then how far away should we place the object? Again, the naive solution is to simply look at the bounding sphere of the object and use that as a guide. Except, this won’t work for irregularly-sized objects that are much larger in one dimension than another. If you did this with (say) a rifle of some sort, then the user would be able to examine the muzzle and the stock up close, but the detail in the geometric center of the object – stuff like the grip, the trigger, and all the moving parts, the stuff you really want to see – won’t ever get very close to the camera. We can add the ability to zoom in and out, at the expense of adding a bunch of new controls that the user must be taught. Or we can try to automate the distance. Or maybe we should use the simple solution but allow the builder – which would be Mike in this case – to set the camera distance manually in the case of unusual items.

For the record, there aren’t any firearms in the virtual mall. But the rifle example does show that irregular objects will present a problem, and I’d rather make this feature correct now than come back and try to fix it later when an irregular object shows up.

This is actually my private test world. I have no idea how a screenshot of it escaped into the wild. I suppose I must have opened the place to the public at some point? The world was just a collection of random test objects clustered around the entry point. Here you can see I was working on user-controlled colored light sources. It was 2001, and I was trying to catch us up to where Quake II was in 1997.

One of the advantages of being a coder is that nobody really knows how long things take. Which means you can pad your schedule. Which means you’ve got some breathing room in situations like this when a seemingly-simple feature actually requires a bunch of exploration and design work before the real coding can begin.

In any case, I don’t mind this work. Sure, it’s for the mall. But this feature will also be available to all users. I don’t know if they’ll have a use for it, but you never know what they’ll come up with. This feature will potentially be useful independent of the mall itself. The same can’t be said for the giant can of beans I poured all that time into.

I work my way through my share of The List™, adding features for the mall, but also other non-mall features. This is fun work, and the freedom to experiment means I have the freedom to make sure I get things right. We finish the The List™, squash the bugs, do a release, make a new list, and start all over again.

I’m so wrapped up in programming these days that I lose track of the launch day for the mall. It’s not until weeks later that I realize it came and went.

Not-So-Grand Opening

If you build it, they won`t come.

In the end, most of my worries were for nothing. I didn’t need to be concerned about the texture download problems, the interface hassles, store integration, performance problems, or the navigation challenges. We aren’t buried in angry support tickets from confused users. All of my complaints about the user experience were pointless, because when the doors open nobody shows up. We built it, and they didn’t come. It quickly fizzles out and the story ends.

I was given a bunch of stock options at the start of this madness. It was supposedly worth over a million bucks when it was issued, but by the time I’m able to sell the shares they’re worth just enough to cover the debt we racked up while living in Boston. I’m not really upset about that. Sure, getting rich would have been nice, but it’s not like I “lost” a million bucks. The money was never real to begin with. Moreover, I don’t think I’ve ever done anything that was worth a million bucks. I’ve certainly never generated a million dollars worth of value to anyone. It just underscores the absurdity of the whole ordeal.

When the mall project formed, two companies were joined together in some sort of stock deal. Over the next couple of years, there will be a long-running lawsuit to undo this. I don’t understand the proceedings enough to relate them properly here, but it’s unpleasant, stressful, and puts the company under financial strain. We used the infusion of cash to expanded our staff during the last couple of years, and eventually we have to take the bitter pill and shrink back down to our pre-IPOInitial Public Offering. It’s what you call when a company begins offering shares of stock. size. The company doubled in size, which means half of us need to go. There’s no way to make that easy.

When the dust settles, we’re once again a modest, privately-heldWe’re no longer controlled by stock owners. The part of the company that has shares associated with it is taken away in the lawsuit. Business is weird., self-sustaining business with a small handful of employees.

How Awkward

Hi. It’s me from 2017 to tell a little side-story that isn’t really relevant to the whole “Crash Dot Com” thing, but it is relevant to this moment in history. 9/11 happened somewhere around this point in our story, and it created some unexpected questions about our user interface.

If you’re old enough, you may remember that people were very confused about how our culture should acknowledge the event. Some people wanted to remove all references – including expunging images of the now-destroyed World Trade Center – from extant works, lest the image traumatize someone by reminding them of the event. Other people felt that doing so was like erasing the WTC from history and was disrespectful to the dead. You had a situation where people who wanted to honor the fallen were sometimes at odds with people who wanted to support the survivors. Both groups were well-meaning people with a good cause, but sometimes you ran into situations where you couldn’t please them both. On top of this was the fact that “the survivors” were not some monolithic group and nobody had the right to speak for them all. In general, it was a really good way to set well-intentioned people against each other.

See, there’s something odd I should mention about our software…

The program used the title bar of the window to show the user’s location. This took the form of:

The coordinates are always expressed in terms of distance from the world origin. For example: “33 South 45 West” or “0 North 500 East”. The thing is, at the world origin is 0 North 0 East. This is where all users will arrive by default. Since 1994, this location has been called “Ground Zero”. But since 9/11, “Ground Zero” has come to mean, “Where the WTC used to be.” This is confusing for newcomers who have never heard the term used in any other context.

I have no idea if it hurt us financially, but it did result in some confusion and awkward conversations. I remember being present for a demo for a potential client. They looked up and saw Ground Zero in the title bar and they couldn’t not see it as a reference to the terrorist attacks. They thought we’d put that in the title bar as a way of honoring the dead or whatever. Even after explaining it to them twice, they still didn’t seem to get it.

Internally, we discussed changing it. It would be easy to rename Ground Zero to something like “World Origin” or whatever. The problem was that this would annoy our existing users. To them this would be one of those “pointless symbolic changes” that people were doing at the time. People were re-designing things, re-naming things, removing things, and generally doing lots of goofy stuff for no reason. As in, “Damn it, I can’t do anything to ease this pain and suffering, but I can make our company logo look slightly less like two buildings. Maybe that will help. Somehow.”

Do we favor our existing users, or change things to avoid offending potential newcomers? In the end, we elected to leave things unchanged. This was the solution I favored, although maybe it cost us some business. It’s hard to say.

So that was strange. Anyway. Back to 2001…

The Fatal Flaw

A chat MMO using Windows-style toolbars and buttons. It was ugly, it was embarrassingly dated, and it prevented us from making (say) a Mac version. Sadly, fixing it would mean moving our interface into the 3D window, and there were a lot of technological problems with doing that.

At first it looks like we escaped the dot-com craze without taking any serious harm. We certainly didn’t go under, which puts us in the minority. But after a few years I realize we took a nasty hit in terms of opportunity cost, and we’re never really able to recover. In 2003, Second Life is launched. We’ve fended off challengers before, but this time we’re just not up for it. Their technology is far ahead of ours. Their graphics are about two generations ahead of what we’ve got. And at this point in history, two graphics generations is a huge difference. They’ve got a powerful character builder while our users are stuck choosing their appearance from a fixed list of stock models. Their interface is integrated with the 3D view as part of the user’s HUD, while we’re stuck with all of these ugly Windows 95 style boxes.

I’ve been doing what I can. I make a particle engine that I’m really proud of. I add lots of new visual effects to modernize the client. But I’m still working with a 1999 level graphics engine. No shadows. No bump maps. No specular lighting. No shaders. Graphics cards are getting faster, but because of the way our engine is set up we’re having a hard time putting that power to use.

2004 comes, and it’s a watershed year for graphics. The one-two punch of Half-Life 2 and Doom 3 drives home the point of just how far behind we are. I’ve been using every trick I can think of, but there’s only so far you can get with smoke & mirrors. You can’t fake your way up the tech tree.

Five years ago we spent nine months migrating to a new graphics engine. When it was over, the software looked exactly the same. That was an unpopular outcome and the will just isn’t there to go through it again. We have a few token meetings and discuss doing an upgrade, but the truth is that there’s no easy answer. When it comes to how rendering pipelines work, 1999 has more in common with 1994 than 2004. Shaders have changed everything. Upgrading our graphics engine now would mean:

We’d need to settle on a new engine. Just picking one is complex, time-consuming, expensive, and risky.

After picking the engine, we’d need to go through another extended period of migration. This one would probably take even longer since the changes would be more extensive.

It would be even more difficult to maintain the backwards compatibility that we depend on.

Once the migration was done, we’d need to do even more work to give our users access to the new features.

There would be a learning curve for our artists as they adapted to the new system.

We were flush with cash in 1999, but now times are lean and this particular task is just too big. Every year the jump gets a littler bigger, which means the job of migrating becomes a little more daunting.

This is the goodbye party for Roland`s last day with the company, sometime in 2002. His last email to me after he left urged me to "never stop learning". Good advice in general, but REALLY important in this field and at this time.

In my view, we spent too many years chasing e-commerce stuff. We made too many virtual meeting rooms, distance learning affairs, virtual training programs, and other trade show type stuff. (Not to mention the virtual mall!) Corporate clients are fussy and hard to please. They’ve never done this sort of thing before so they’re not sure what they want. Keeping them satisfied requires a lot of trial and error that often kept our programmers and our artists busy.

Even if I don’t like it, I can understand why the company went this way. Those jobs paid well. But taking them meant passing on things like keeping our technology updated. This left the field wide open for Second Life.

Between 1999 and 2004, our technology stagnated while Second Life got to be the sexy headline-generating darling I’d always wanted us to be. We took our eyes off of being a platform of social creativity and embraced something that ultimately dragged us down. The e-commerce jobs paid the bills in the short term, but prevented us from seeing to our long-term survival. From this point on, we’re going to gradually lose users. Not just to Second Life but also to stuff like World of Warcraft. We were an amazing technological marvel in 1997, but the idea of chatting with people all over the globe is no longer a novel experience. It’s commonplace, and we don’t have many things to set us apart from the competition.

I can’t prove that the dot-com boom killed the company, but from my viewpoint in the trenches that’s how it felt. For four years we shifted focus to e-commerce, and doing so created setbacks that we were never able to overcome. I admit it’s entirely possible that without those e-commerce jobs we would have run out of money back in 1998. It’s possible the road we took we the least-worst one. But I’m still sore about how things turned out, and I’d love to play through a re-do of history where we focused on our core audience and technology. I’d love to see an alternate timeline where our face-off with Second Life looked more like a battle between equals and less like World of Warcraft steamrolling Everquest. I don’t know if we would have come out on top, but it would have been really fun to try.

If you want to pick up the story of my life from here, you could read this series. I have one more entry in this series where I’ll look back on the dot-com madness and talk about how it’s impacted my writing and worldview today.

Footnotes:

[1] In my defense, his conventional design was able to draw from our existing library of standard objects, and he’s able to re-use quite a bit of the store interiors that I designed. But he’s still running circles around me in terms of artistic output.

[2] You can picture this as the user holding up the object in front of their face.

[3] Initial Public Offering. It’s what you call when a company begins offering shares of stock.

[4] We’re no longer controlled by stock owners. The part of the company that has shares associated with it is taken away in the lawsuit. Business is weird.

As always an insightful read, Shamus. Although, as I’m reminded every time someone insists that celebrating a “new year” is pointless since it’s just one day leading to the next, as happens all life long until you run out of days (as Kevin Spacey’s character in “American Beauty” so aptly points out), there are still watershed moments that aren’t always visible at the time but will forever after lead to retrospective “what if” moments.

This is really interesting. I was 10 in 1998, and it was around then when I first got on the internet, and during that period I’m fairly sure I saw adverts for Active Worlds. I think it was on one of those AOL disks that got posted to every single house. At the time, I thought stuff like Active Worlds WAS the internet.
I was pretty disappointed when I found out it wasn’t :)

Earlier in this series, Shamus talked about the dangers of being a visionary who is right about the “what” but early on the “when” – like someone trying to market a Model T in the 1880s. I think this applies to Active Worlds as a whole: the amount of money interested in this kind of project in 1998 simply wasn’t enough to keep up with the rapid graphical improvements of the next five years, so the company’s early start only resulted in a backwards compatibility burden. And something as graphics-driven as Active Worlds or Second Life can’t afford to look horribly dated while graphics tech is surging forward at the levels of the ’90s/’00s.

As proof that the world really is changing faster, I find it interesting that the difference between “early pioneer footnote” and “Internet mainstay” was only five years.

Until I looked it up just now, I hadn’t even been aware that Second Life still exists … thought they’d had their time ten years ago and only faded since then.

They must have gone through a few engine upgrades since 2003, but then I guess they must have been able to afford more than three programmers for a while now…

But then, I’ve no idea what they make their money with.

Shamus, can you tell us what active Worlds made money with, outside of the corporate contract work? I mean, the open world stuff, that must have made money somehow, but I don’t suppose the users had to pay? I also don’t suppose AW was mass-collecting user data and “monetizing” that?

I can’t remember when it started, but eventually we started charging users for access.

Income 2: (Moderate)

We sold “worlds”. Prices started at (IIRC) $100 a year for the smallest, which was maybe half the size of a regulation football pitch and allowed three simultaneous visitors. More land and more users were more money. Users can build whatever they want. They can draw from one of our libraries of pre-built objects, or they can add their own models and textures.

Income 3: (The best)

For corporate clients: We’d sell them a world, then build it to their specifications. I have NO IDEA what these jobs cost, but the bosses were always happy when we landed them.

Makes complete sense to me that the corporate jobs paid best by far — the plain worlds would probably go to small groups of people who have enough time on their hands to play around with them. The custom-made ones will go to companies with a lot more money than time who plan to get a commercial benefit out of them, so the worlds need to look the part, too.

And regular casual users were probably just getting used to having everything for free, so you couldn’t have charged them much anyway. Interesting that apparently AW did not sell ads? Quite a nice thing to do, actually. Now I’m a bit sad I didn’t try it back in the day.

We tried selling ads. The “YOUR AD HERE” sat on a billboard at the main entry point of the entire universe for over a year. Then we finally realized we were just advertising how useless the space was and took it down.

Well that was a bit of an anticlimax. All that buildup to the inevitable crash, then the thing launches without you even noticing and you skip right to the aftermath of the partnership dissolving.

I suppose it’s the nature of real life to rarely have a satisfying narrative arc, but when the crash is right there in the title, it’s disappointing to read eight chapters leading to “It quickly fizzles out and the story ends.”

I think it’s as you say – it’s real life, and that shouldn’t be grounds for criticism. What’s interesting (at least to me) is that we’re often forced / often enabled to construct the satisfying narrative for ourselves, if what passes for reality is steadfast in its refusal to provide it.

The ability to do so is one of our real strengths as human beings, I reckon, although there’s no doubt there can also be drawbacks, as one might expect from something so powerful, yet oftentimes unwieldy.

And, we might see some of this ability in action next week! – the series isn’t done, so we can’t call time on the story just yet-a-while either.

But even if you focused on user generated content side, wouldn’t you still have faced the same problem with not really being able to upgrade the graphical engine without destroying the backward compatibility?

It does make you wonder. Is speculation itself the problem? If we spent less time thinking about what might be, and instead worked on making right now the best it can be, would we less often fall into the trap that ActiveWorlds fell into, of committing to early to be compatible with the foundations it relied on?
Am I doing just that at this moment?
Thanks for sharing Shamus.

I don’t know. You run the risk that the next disruptive innovation introduced by the people who are thinking about what might be will render your attempts to perfect what you have redundant. Like if you were trying to make CDs or Mini-Discs better in the late 90s right before MP3s made that a waste of time.

“I don’t know why John Business was willing to listen this time around.”

Thinking about it, it may be that if someone raises an idea and immediately gets a lot of objections, they feel like people hate the idea, and if they’re committed to it, they push harder. But once there’s at least some progress, they’re more willing to listen to comments on specifics, especially “you can have most of what you want, but X will cost YYYY and prevent us doing Z, would you rather have X, or W (which is cheaper and more popular with the users?)”

Which I guess may be partly Mike being more socially competent, and partly luck that he came in at a better point in the project.

But I mean, business guy *should* be able to listen to feedback. That only makes sense for him. But lots of people are not great at doing that.

I’d also add that John Business was now hearing similar complaints from a new person, completely unconnected to Shamus, much later in the project. Once is a coincidence, but it gets harder to dismiss as the same issues surface repeatedly.

This was really, really fascinating to read. Me and my small social circle were playing ActiveWorlds for about four or five years right around this timeframe, so it’s definitely great to hear an insider perspective around these specific events, which stood out to me as interestingly odd even at the time.

(Even as twelve-years-old as I was at the time, I could come up with a list of reasons almost as long as yours on why the virtual mall seemed like a terrible idea. It was really amusing to see you mention the same issues!)

I may be remembering this wrong but Ground Zero is a military term indicating the area where a bomb or explosion or a similar devastating event occurred (nuclear bombs for example), or the impact point of a meteorite or asteroid.

I’d also like to say that this work you guys did with ActiveWorlds all look like a early cousin of Second Life.

It was of immense value to me. I’d just gotten done reading Kurzweil’s “The Singularity is Near” and decided I wanted to explore the closest thing we had to a Metaverse.

I learned some interesting things about identity, reality, and the impact of moving your personality into a more fluid and flexible space.

No, I was never a furry, I observed communities more than I partook and when I did partake, it was the superhero scene, as embarrassed as I am to admit that now, and if you were in Second Life, you know why.

Though it was interesting to see the power of reframing a thing and how it could get community participation. For example, you weren’t just an assistant mod helping to battle trolls. You were a superhero fighting crime.

There were advantages and drawbacks to that framing. The advantage being that it turned a chore into something fun via a useful analog. The disadvantage was that self styled superheroes often made the mistake of actually “fighting” trolls the way a superhero would fight a villain, using scripted attack weapons and objects, when what they should be doing is filing abuse reports.

But there was also a police department in world that did a better job. Second Life allows you to script objects to act as proxies for user, so that a sim admin can bestow their own rights upon said object. This allowed the police department to create a network of objects that sim owners could deploy on their land to empower a volunteer security force to fight trolls, and to blacklist trolls from all lands using this object.

The cop framing did the job better than the superhero framing in this case but both showed how identity and reframing could motivate community action. Years later, having been a casual student of game design, I think we could have reframed the superhero paradigm to be more productive, by pairing visual effects with proper administrative functions to give the act of being an admin a cool “superhero” feel.

Being a cop also allowed me to explore a lot of communities that I wouldn’t have encountered on my own. It was good times.

Your company sounds like it wasn’t run right from a business perspective. As you said, they thought short term, not long term, and it showed at the end. The company could’ve actually taken on an entirely new face and had two teams; one for e-commerce and the other for graphical engine upgrades.

It might’ve asked for a few loans or investments, but there would’ve been a mix of both long and short term goals being met. Alas, I was only four then, so I don’t know what could have been done.

I had been working on a project I didn’t believe in and didn’t care about. I never would have tried to negotiate a change to the design with Mr. Business because – based on my previous rejections – I didn’t think anyone would listen. Mike doesn’t have all of that baggage and he wasn’t present at that initial meeting where nobody wanted to hear “no”, so he’s willing to be candid about his concerns with the design.

Take note young people. Just because we aren’t piping up and challenging the office orthodoxy doesn’t mean we don’t appreciate you for doing so. Its just that motivation is a finite resource and experience often makes us risk averse.

But we are often secretly grateful when you stir up these discussions so please do so, even if you get blank stares.