Events of the morning cause me to reflect on what the odd design of my Asteroids program might tell us about life in general. Turning social, a bit. Observing, not deciding.

Somehow I got the idea, doing this Asteroids program, of there being lots of tiny object in the mix, each with a simple job to do, and somehow among themselves creating a game that makes sense, and that replicates a game written in a more conventional straightforward fashion. It may not be too surprising that objects interacting could create some game, but it seems to me a bit more interesting that they can create a game that you really can’t tell from the original conventional procedural way of building.

Yesterday in a Slack exchange with Hill, I remarked that I really like the ShipDestroyer object, whose sole purpose is to remove the ship from play. It just seems to me to be a delightful bit of over the top. Need to remove the ship from play? Rez a ShipDestroyer to do it.

Hill seemed not to love the idea and pointed out in passing that he had tried to remove it and that for some reason his attempt didn’t work. My first reaction was that it should work: what he did, I’m sure, was, instead of rezzing a Destroyer, just issue a removal transaction to remove the ship. I allowed as how that should work and that I might even do it.

But this morning, as I was beginning to boot up my personal systems, I realized why issuing a removal didn’t work. Transactions are applied, after all the looping is done, first removals, then adds. The hyperspace code runs after the Maker has issued an add for the ship … and even if it did issue a remove, it wouldn’t happen, because removes run before adds, so it removes the ship and then adds it back and it’s not gone. Adding the Destroyer, on the other hand, results in the Destroyer running in the next cycle, where it sees the newly added ship and removes it. Destroyer works, the more obvious scheme does not.

Now clearly there are things that could be changed so that the Destroyer isn’t needed. We could do adds and then removals. We could order all the transactions and do them one at a time. We could decide before we make the ship that it’s due to explode and just make an explosion instead.

Each of those changes could be made to work. And each would have other ramifications.

Let’s move a bit toward generality.

Objects, interacting …

The game’s design essence is small objects, all in the same situation. each taking individual actions, somehow creating a game among themselves. And they really can only do a very few things:

  1. Any object can remove itself from the mix.
  2. Any object can add any other object to the mix.
  3. Every object can receive an interactWith... message from another in the mix. That message includes the object interacted with, and a transaction, and the name of the method tells the receiver what kind of object they’re interacting with.
  4. Every object can have a chance to update, and a chance to draw itself.

That’s all there is. The game starts with just three objects, none of which is a part of the visible game. The game kind of creates itself out of tiny object loosely interacting and yet this very organized and enjoyable outcome results.

I really rather like that. I like it a lot. And then something else happened.

People, interacting …

An internet-famous individual wrote something recently about Diversity, Equity, Inclusion efforts, groups, executives, whatever. They seemed to be saying that DEI doesn’t work, creates unfairness, and that we’d be better off without it. The usual voices will surely chime in on both sides, agreeing or damning. It’s hard to have a civil conversation these days, about these difficult problems.

In my little program, it’s hard to talk about how it works, because the game is co-created by a dozen or more objects, each following its own rules, interacting very gently with the other objects. Hill found it hard to grok, and I believe he still thinks a different design would be more obvious. I have written Asteroids at least once before, and Spacewar! at least three times, and I agree that a different design could make it more obvious.

It would also, I believe, make the game more difficult to change. With this design, I could add another ship, if only I knew how to control it: I’ve dedicated the keyboard to the current ship. Can a joystick attach to a Mac and to OPENRNDR? If so, another ship would be easy. I could code up a ship eating monster. I could (and will) create a ship-attacking flying saucer. And each of those things would be created by one or more small objects obeying the simple rules.

Society …

Society — and yes this is a reach — is made up of many small objects, people, interacting loosely with each other, through the application of rules. At first we think those rules are way more complex and powerful than my few above, but when it comes down to it, we can mostly just observe each other, remove ourselves from play, and say things to other people. (We can, unfortunately, also harm them. Maybe the AR-15 object should be removed from the system.)

Throughout history, largely as a result of talking with or shouting at each other, groups have formed which have come together to do wonderful and horrible things. It all comes down to people interacting.

Because a large group generally has more power than a smaller or less connected one, we have tried to make overall rules to make things better. We don’t agree on those rules but we seem all to think that there must be some. Individuals or groups can accumulate too much money, whatever that is, to the disadvantage of most everyone else. We devise taxes to try to improve things. We devise governments to try to make things more fair. We put rules on top of rules, trying to make everything good for everyone.

Except … some people don’t believe there is enough stuff in the world for everyone to be happy. They try to enact rules that will allow them to accumulate stuff to the disadvantage of others. At base, their thinking is something like “well, there isn’t enough to go around, I’d better be sure to get enough for me and my cronies”. “Enough”, in our current system, seems to come down to some individuals having thousands of times more stuff than other individuals.

That does not seem fair to me, nor to a lot of people. But other people see that inequity as an opportunity for themselves. “If I can suck up to Elmo, some of his riches might come my way”. So some people become enablers of inequity and unfairness.

So we try to make more rules for the system to follow and the other guys try to make the rules not work, or to make rules that work to their advantage. Certain politicians have come right out and said that if they get the right people elected to election control, their party will never go out of power again.

Power. Do we elect these people to give them power? I think we are supposed to be electing them to represent us, but of course that can easily become “to give us more power”.

Zero-sum thinking, whether it’s right or wrong (and sometimes it is right and sometimes it is wrong) will inevitably lead to concentrations of “stuff” whether stuff is good stuff, which seems to concentrate over there, or bad stuff, which seems to concentrate over here.

In my game, the WaveChecker checks to see if there are any asteroids on the screen, and if there are not, after a short delay, it creates some. One day I did something that caused it to stop checking. So after a short time, it made more. After another short time, it made more.

Pretty soon, the screen was full of asteroids, and my poor ship was overwhelmed, and the game was no fun for me. Hell of a great day for asteroids, I suppose.

I was able to fix my asteroid oversupply by fixing the WaveChecker. I am inclined to think that I could fix the Amazon problem by fixing Bezos. But I’m wrong, because I’d have to fix tens or hundreds or thousands of people like him, who tend to accumulate more than their fair share of “stuff”.

The problem is, of course, “the system”, and so we try to fix the system by imposing overall rules intended to make it better, by whatever our standards of better may be.

If our standards of better are that underrepresented groups deserve a better deal, we might set quotas, or adjust the admissions rules, or any of a number of actions that seem to make sense. And yet, it turns out that every such change seems to make another problem pop up somewhere.

I think that is a fundamental truth. I think that no finite set of rules can control human behavior so as to bring about fair, equitable, decent treatment for everyone in the system. I think it is literally impossible, because the larger a set of rules becomes, the harder it is to change, and the harder it is even to figure out what it’s really going to do.

That doesn’t mean we should stop trying. No, we must keep trying, keep working, keep doing, keep influencing, so long as there is any unfairness in the world. Some of what we do may come down to creating rules (or removing them). Some may need to be done by caring individuals or groups doing work.

Is it a bug or a feature that there are things like the Red Cross or Doctors Without Borders? It’s a bug that they are necessary. But because they allow like-minded individuals from all over the world to work for commonly held goals, they might be a feature … and they might be a better alternative than some government action. They could be more timely and more focused.

And, if the Red Cross is a feature, then why isn’t the most odious organization you can think of also a feature? It’s the same mechanism, people from all over working for commonly held goals, like the subjugation of some country or the development of something while destroying the environment.

The difference, of course, is in the goals. The goals of “my” organizations are good. “Their” goals are bad. (And sometimes, our good and well-intended actions as a group have bad and undesirable effects that we cannot and could not foresee. What’s up with that?)

So … and I said up top that I’m observing, not deciding … I think that there are some things to consider:

  1. Large scale rules (laws) are probably guaranteed to provide some good at the cost of causing some bad elsewhere, because you can’t control a whole system by rules.
  2. Individual and group action is a very powerful tool, and these days, the group doesn’t have to be your family, your village … it can be a group of like-minded individuals all over the world.
  3. Individual and group action can produce a better, more fair system … but they could also create an unbalanced unfair system. And, unfortunately, the latter might be easier.
  4. It comes down to values. We need to be clear about what we value and what we don’t. We need to educate people in good values (but define good).

But it’s hard, ain’t it hard … because a lie is around the world before the truth gets its pants on, because cruelty seems to be its own reward for some people, and because kindness to cruel people seems not to make them more kind.

We are a large number of tiny objects, trying to make a pleasant world that is fun to play in. And one broken object can create a widely spreading mess. I think we have to repudiate those broken objects, every time. And yet … whatever means we use can be used in the other direction.

I rather believe that it is mathematically inevitable that there will be inequity and evil in the world. I guess that all we can do is to say what we can, do what we can, give what we can, to make things better.

It’s a hard fight and a demoralizing one. It’ll probably never be over. Our best hope, I guess, is to try to get all the objects around us to do the right thing. If I knew exactly how to do that … you can be sure I’d tell you.

Just keep trying, I guess, and try not to support those whose values you can’t support. Know, however, that they’ll do the same to you.

We can make more good in the world. The more we make, the more will be made. Keep trying to do good.

That may be all there is.