Making worlds

I still remember the day I first learned to use the Unix operating system command line. I was quite young at the time.

There is one command in particular that lets you make new directories to put files in. You can then travel into any of those directories and make subdirectories. And so on, in an ever expanding tree.

There was a moment, when I was first trying this, that I thought to myself “Wow, I can create worlds within worlds, entire vast Universes!” Looking back now, it seems like a naive thought, yet I can still recall that rapturous feeling, that heady rush of infinite possibility.

Today I put my little interactive woolly mammoth into a virtual world, and then I added a second mammoth. As soon as I saw that second mammoth beside the first one, I felt exactly that same heady rush.

It’s one thing to create a virtual creature. It is quite another to create an entire world of virtual creatures.

One creature is interesting. Two or more virtual creatures can interact with one another, play together, form relationships, become part of an ever expanding story.

Making worlds is fun.

Consistently contradictory commentary


Darn her stupid cleverness.
His vanity is so unattractive.
Her seriousness is so damn funny.
He is lonely, just like his friends.
She has quite an appetite for new diets.
His greatest flaw?  It’s his perfectionism.
She is happy only when she’s feeling miserable.
He is one of those people who simply loves to hate.
She has an old fashioned need to try the latest thing.
His reliance on superior strength is his greatest weakness.

Collaboration considered helpful

When you work on a project by yourself, you are completely free to set your own rules and conventions. This can be extremely convenient.

After all, we are all very good at communicating with ourselves. For one thing, we know our own thoughts.

But when you bring another person into the mix, things get trickier. Everything needs to be clear — and not just inside your own head.

In the last few days I have needed to make the transition from writing a piece of software all on my own to bringing in a collaborator. Which means I’ve needed to go into my code and change a lot of things, in order to make everything easier to understand and communicate.

There was a part of me that felt grumpy about this. After all, I already knew exactly where everything was before this other person ever came on board.

But then I looked at the changes I had made, and realized that the entire system was now much cleaner, more robust, and far easier to maintain. Clearly there is something intrinsically better about code that is designed for collaboration.

I suspect that this principle generalizes to other parts of one’s life. Even to those parts that don’t involve software or computers.

VR and beer

I went to see a friend’s VR piece at Pioneer Works in Brooklyn. Then afterward some of us went out for beers.

Two very different experiences: Hanging out while experiencing an alternate sensory world, and then hanging out together in this sensory world.

I found myself wondering whether there could ever be a viable cross-over experience. Will we ever share a beer with friends in VR?

I’m not even sure at this point what such an experience would be like. But I am quite certain that we will recognize it when (or if) it ever happens.

Non-virtual pachyderms

Today I am visiting my mother. I showed her the interactive computer animated virtual mammoth I’ve been working on. Then my mother told me about the real elephants she saw a few weeks ago. She just recently came back from a two week trip to Africa (mostly Zambia, Zimbabwe and Botswana) with some friends. They spent time most of the time in the jungle amidst the lions, giraffes, elephants and hippopotamuses.

My mother described to me one particularly memorable incident. She was observing a large elephant that was standing at the edge of a river, eating some of the tall grass that grows in the water.

Another smaller elephant also saw the yummy grass, and sauntered up to join in the feast. When the second elephant got to the water’s edge, the first elephant pushed the smaller elephant firmly away with its trunk. The smaller elephant promptly beat a retreat.

Then, as my mother watched, the second elephant slowly returned to the water’s edge, step by quiet step, taking care to not disturb its larger acquaintance. In the end, both elephants were standing side by side, happily munching on the river grass.

My mother told me she was astonished at how human this whole interaction seemed. The second elephant had clearly figured out that the problem wasn’t that the first elephant didn’t want to share the grass, but rather that the first elephant simply didn’t like to be disturbed while it was eating.

Procedural animation from the inside out

When I create an interactive procedurally animated character, I usually start with a high level sketch, in words, of who the character is. Primarily I am looking for attitude and motivation.

It really boils down to a single question: “If I were that character, what would I do, and why would I do it?”

I’ve been writing a lot of code recently to create an interactive woolly mammoth that we will be showing at the big SIGGRAPH computer graphics conference in Vancouver this coming August. To make it all work, I’ve had to figure out lots of tricky mathematics and algorithmic detail.

There are also questions of anatomy and biomechanics that are specific to pachyderms. These questions have required research and study of bone and muscle structure, as well as much experimentation. For example, like I said yesterday, how exactly does an elephant move its trunk?

Yet at the end of the day, it all comes down to understanding the character. Here are the notes I wrote for myself when I started this. These notes serve as an indispensable guide to everything I am implementing:

The mammoth thinks of herself mainly as a friendly floating head, curious about the world around her. Her main means of interacting with the world is via her trunk, so she is primarily engaged in using her trunk to interact with the world in various ways, such as carrying objects, picking up food to put in her mouth, or affectionately nuzzling her friends.

Most of the time she not very aware of her body. When she wants to move her head, her body simply moves to make this happen, while using the minimal expenditure of energy.

She is not really aware of her tail. It functions mainly to swat away flies, without her really thinking about it.

To animate the mammoth, we mainly communicate with her head, telling her which objects or other beings she is interested in, and what tasks she is engaging in. For most tasks she will use her trunk. The mammoth’s trunk is her superpower, and she knows it.

Trunk

Yesterday and today I focused on a really fun self-contained programming project. It was part of a larger project, but it possessed its own clearly defined goals and boundaries.

First, some context. I’ve been creating an interactive computer graphic woolly mammoth for a project we are doing here.

If you’ve ever animated a pachyderm, you know the most important and also the most difficult part to get right: The trunk.

After all, an elephant’s trunk is its pride and joy, its superpower, its primary way of expressing itself and for interacting with the world, possessed of both incredible power and incredible delicacy.

In that way it is very much analogous to that great superpower of our own species — our capacity for language.

My project these last two days was essentially to build something in software that moves just like an elephant’s trunk. And this afternoon I finally got it right.

So now I have what you might call a “standalone trunk”. It works just fine on its own, but it has not yet been integrated.

Which is just fine, because that gives me two fun things to work on tomorrow: Attaching a trunk to my computer graphic woolly mammoth, and then teaching the mammoth how to use it.

Tending my garden

From the time I was a small child, I was taught that this day of the year was a day to celebrate my country. I am certainly not naive enough to think that my country is wonderful in all respects, but at its very best it has been pretty impressive.

Unfortunately at this moment the United States is far from its best. It is turning mean.

All the way at the top, within our government itself, I see bullying, cruelty, racism, misogyny, scapegoating and xenophobia — even an embrace of Nazi ideologues. Never thought I would see that one.

I can’t bring myself to watch fireworks this evening. I love this country too much to pretend everything is ok, when things in this land are very far from ok.

And so today, rather than go out and watch fireworks, I am spending the day in the lab, working to build something beautiful to share with the world. The people who I am making this for will not need to belong to a particular tribe, or have a certain skin color, or speak with the right accent.

They just need to be humans, because to be human is to possess an intrinsic dignity. We are all, every one of us, marvels of the Universe. Each single person on this planet is a fresh miracle.

If we fail to see the miracle of another human being, then we just demean ourselves. It is our own humanity that we destroy.

So today I am taking Voltaire’s advice and working to create something beautiful, not for one particular set of humans, but something to be shared and enjoyed by all. As Candide eventually figured out, sometimes you just need to tend your garden.

Hit lit wit bit pit nit fit

Have you ever read something that was simply too clever? I mean, were you ever immersed in a popular and well-reviewed novel when, out of nowhere, one particular phrase caught your eye simply because of its extreme wit or elegant construction?

For me, this is not necessarily a good thing. Finding my attention drawn too much to an individual phrase or sentence can yank me clear out of an otherwise good read.

At such moments, I tend to feel that greater cleverness in writing is not always better. I like it better when the writing is good in that more difficult but less showy way: When each part subsumes itself to the whole, thereby supporting an experience of maximum immersion.

It’s an easy pit to fall into. After all, who doesn’t love a well-turned phrase?

Still, as Arthur Quiller-Couch once sensibly advised: “Murder your darlings.”1

Alas, I somehow managed to violate that rule in the very title of this post. So I guess it’s time to quit this hit lit wit bit pit nit fit.2


1. Quiller-Couch, A., On the Art of Writing, University of Cambridge, 1916.
2. Op. cit.

Productivity measured in BTU/hr

It has been exceedingly hot here in NYC. And we are not alone. I understand that something similar has been transpiring up and down this Eastern coastline.

Fortunately, we work in a University that is very good at providing air conditioning. I think it is not a coincidence that so many people are here in the lab, working away during the summer break.

I suspect this is part of a larger trend: people who choose to work longer hours in air conditioned offices on a super hot summer day. I suspect that for every BTU/hr spent on air conditioning, summer office productivity rises by a quantifiable amount.

I wonder whether anybody has ever calculated the positive effects of office air conditioning on summer productivity.