5,000 Hits

Back in 2006, when I first started this blog, I’d never expected to reach 5,000 hits. Like many of the other websites I’ve started or attempted to start, I’d expected to lose interest, or to be disheartened by the lack of traffic and give up. That didn’t happen, however, and I now find myself at something of a sentimental little milestone.

Wow. 5,000 hits. That’s ten hits a day. For some websites, that would be ridiculously small. But, as usual, I’m going to take my achievements where I can get them.

To mark the occasion, I present to you a small gift: 128 ampersands (sorry, that was the best I could come up with. Sleep deprivation always dampens my ability to choose gifts)




Review: “Sunshine”

I enjoy being cynical. Anybody who’s read even a handful of my posts will know that. But, like a character in a bad movie, I have a soft spot for certain things.

One of those is great science fiction. I was impressed by the writings of Arthur C. Clarke, Charles Stross, and Isaac Asimov. I was intrigued by Stanley Kubrick’s 2001: A Space Odyssey. And I was greatly moved by Danny Boyle’s Sunshine.

Sunshine is the story of a group of astronauts sent to deliver a bomb to “re-start” the dying sun. This plot sounds remarkably standard, and in a way it is, but then again, so is “Man wakes up in a post-civilized world, surrounded by zombies and struggling survivors,” and Danny Boyle managed to make that one come alive in 28 Days Later.

This may sound like disjointed gushing, but I honestly believe that Sunshine has to be one of the best science fiction films of the last ten or twenty years. The characters are very compelling, and unlike in most movies (science fiction or otherwise) of today, they actually feel like human beings. You come to feel for them, to understand them. Very rarely does one see that in movies these days.

The special effects are — and I feel like something of a fool for saying this — beautiful. Never before have I seen modern CGI used to such tremendous effect. The film manages to portray the sun’s incomprehensible brightness, and something of its great beauty as well. I never thought I’d say this, but for once, a movie left me with a profound appreciation for something.

The effects are impressive primarily because they mesh so well with the film’s overall artistic style. This style is incredibly rich and deep, and very compelling. I’m not sure how, but somehow, Sunshine manages to blend sound and light, letting our ears take over when the light gets too bright for our eyes to even comprehend. The movie makes light seem very substantial, very real, and dangerously beautiful.

This blurring between sound and light serves to accentuate the soundtrack, which is up to the extraordinarily high standards Boyle set in 28 Days Later. Frank Murphy and Underworld score the film with what has to be one of the most haunting soundtracks I’ve ever heard. Even the sound of a distress beacon is heavy with emotional impact, a lonely, heartbreaking sound that fits so well with the rest of the movie.

So, I’m several paragraphs into my review and already I’ve sung Sunshine‘s praises as though it were the god of my new religion. Make no mistake, the film is not a golden gift from the gods, but it gets about as close as any mainstream movie. Nonetheless, there were elements that bothered me. The movie developed a withering, aimless feel in its later scenes, and did not recover until somewhere near the end. There’s a rather oddly recurring villain who adds a confusing fundamentalist religious element to these scenes as well, and whom they might have done without. And, it fell victim to that omnipresent scourge, weak science.

In this case, however, I’m going to do something I’ve never done before, and will hopefully never do again: I’m going to forgive Boyle for his bad science. It’s a very rare thing when the characters are moving enough, the story is good enough, and the visuals are pretty enough to make me gloss over scientific omissions and mistakes, but that’s what happened here. Hell, I was even willing to ignore the fact that the film had sounds in the vacuum of space (which regular readers will know annoys me to no end). That’s how good the rest of the film is. It’s definitely a must-see for nerds and science-fiction fans. Normal people would probably enjoy it, too.

NOTE: Yes, I am fully aware that Sunshine came out in 2007. I’d intended to see it on the big screen (and I imagine it was even more incredible in the theater), but since there was less publicity than I’d been expecting, I somehow missed it when it was in theaters. Damn.

Unexpected Consequences

One of the things that’s always fascinated me the most about simulated evolution is the way in which simulated organisms have a tendency to exploit any loophole or weakness in your code for an evolutionary advantage. Although I’ve designed and attempted to design a handful of evolutionary simulations, I’d never until today seen an example of this Darwinian cleverness.

A few days ago, I threw together a simple little evolution simulator in NetLogo. Each of the agents in the simulation had three genes: xcor (position along the x-axis), ycor (position along the y-axis), breednum (the number of daughter agents it spawns when it reproduces), and killpropensity (how likely the agent is to kill a random nearby agent). The simulation produced some interesting — although not terribly fascinating — behavior: those agents that produced the most offspring had a tendency to dominate. There was an interesting dynamic between the “killer” agents and the “peaceful” agents. The killers tended to form low-density groups (since if any of them were too close together, they’d usually kill each other), while the “pacifists” formed dense blooms. For a while, the killers would hold back the pacifists, but eventually, the pacifists would encroach and squeeze out the killers altogether. A typical run looked like this:

The agents inherit the color of their parents, so the coloration isn’t exactly by “species,” but it’s pretty close. As you can see, the green agents are fast-breeding pacifists, rapidly encroaching on the slower-breeding killers toward the center.

Then — and this is where the unexpected behavior and exploitation of loopholes I was talking about comes in — I introduced a new variable: mutationrate. It controls, obviously enough, how rapidly the agents mutate. Very quickly, every run started to look like this:

As you can see, this blue species has very rapidly come to dominate. You can’t see it, but this species has a rather high mutation rate. It took me a while to figure out why the fast-mutators were at such an enormous advantage. Then, I remembered that, in this simulation, the agents were competing for space, and in such a competition, the fittest organisms would be the ones that can maximize the space filled by their offspring. Since x-position and y-position were treated as genes, they were being mutated right along with the other variables, and since a rapidly-mutating position allowed the agents to jump farther from their parents and fill space more rapidly, fast mutation was an enormous advantage. It was such an enormous advantage that, even though the extremely large mutations the fast-mutators experienced prevented the evolution of any other behavior (because those genes tended to get so randomized that they effectively didn’t get passed on), they were still far more successful than any of the other species.

After I corrected for this ludicrous advantage (by setting it so that mutation rate couldn’t work on the position genes), this is what I got:

For a moment, I thought I’d solved the problem, until I inspected some of the agents and discovered that they had stopped mutating altogether. The sneaky intelligence of the genetic algorithm strikes again! I suppose that mutating would become something of a maladaptive behavior once the organism had optimized all of its other behaviors, since, after optimization was reached, any organism that mutated could only be at a disadvantage.

I realized that the only fix for this would be to force the mutation rate to stay above 2 (it’s a peculiarity of the random-number-generation code I cobbled together for this simulation that, at a mutation rate less than 2, no mutations occur). I thought that all I’d get would be the simulation I started with, but I was pleasantly surprised to discover that there was actually quite a diversity of mutation rates, and that none of these rates was at a particularly huge advantage over any of the others. This is what a run of the fixed simulator produced:

Those numbers you see hovering over every agent are the mutation rate. It appears that there’s not really an advantage to having a mutation rate above the usual 2, but it does seem that there’s not a disadvantage, either. So I can finally call this simulation fixed.

This experience reminded me that there’s a reason genetic algorithms are so popular in AI research, and that brings us to the moral of this little story: Darwinian evolution is a lot smarter than us. When writing evolutionary simulations, if there’s a loophole or a workaround or an exploit to be found in your code, then evolution will find it. Plan accordingly.

NOTE: Someone requested an image with the organisms color-coded by “kill propensity.” Since you asked nicely, and since I agree that that would be a good image to have up here, here you go. The organisms that are the darkest have the lowest probability of killing their neighbors, and the ones that are closer to white are very likely to kill:

As you can see, the situation is as I described in the body of the post: the killers have too great a tendency to limit their own growth, and are easily out-competed by their more peaceful counterparts.

Writings Page — Up and Running!

As promised, I’m slowly beginning to merge this site with my two other blogs. Pursuant to that, I’m now posting some of my short stories on the newly-minted Writings page. I plan to update it semi-regularly — that is, on those rare occasions when I can actually get around to writing semi-regularly — so check it periodically. When I’ve finished my revisions on For Ardella (the novella I wrote for NaNoWriMo 2007), I’ll probably post that, too.

A warning: if there isn’t now, there will probably at some point in the future be stuff posted to the Writings page that is not suitable for very young readers (especially if I actually get around to posting For Ardella). There won’t be anything terribly pornographic or overwhelmingly vile and horrible, but I certainly wouldn’t recommend all of my stories for people younger than fifteen or so. But, if you think that you’re mature enough to handle mature themes like sex and death and all that good stuff, then go for it. You have been warned.

SimHeart Update

The folks at the NetLogo website have been gracious enough to include SimHeart in their “community models” page, and the result is that there is now a place where you can run the program in your web browser (assuming you have a recent enough version of Java installed). Now, you don’t have to download or install anything in order to run it.

You can find the SimHeart applet here.

Once again, many, many thanks to the creators of NetLogo.