Let's start by pretending that you haven't heard of Minecraft. Minecraft is a game where everything is a cube, including you for the most part, and you and your friends have to survive the wilderness together. You can do this in any number of ways, from digging underground to find precious iron, gold and diamond cubes, to farming trees and building a nice little house on the surface. Or you can do something completely different. It's really up to you. Minecraft's open nature is a big part of what draws people to it.

But let's make one thing clear: the creator of Minecraft, Notch, is crazy. You're going to understand why by the end of this post. It's not just because he's Swedish. At least I don't think it is. It has to do with Minecraft's insane bugs. Remember my last post? I wrote it so that I wouldn't have to explain what an insane bug is while talking about Minecraft. I'm going to assume you've already read that post from this point on.

Working from the insane bug proposition, it follows that I can prove that Minecraft's codebase is full of architectural nightmares if I can show that it contains insane bugs. It also follows that Notch is crazy if Minecraft's design is a horrible topology the likes of which not even Cthulhu could generate.

Now, I want to make something else clear: I love Minecraft. This game is amazing fun. I paid for it and I've been enjoying it with excessive exuberance for several months. (It's actually quite amazing to observe how quickly time in the real world passes while playing Minecraft. Notch just may have found the secret to time travel in his unending pit of Swedish insanity. But that's a topic for later.) Likewise, I'm aware that the game is in beta, and one generally cannot expect a beta game to be free of issues. So I'm going to try to demonstrate something else: insane bugs are not the kinds of bugs one should expect in beta software.

I'll start with the last point: insane bugs, by definition, are indicative of architectural problems with software, not just superficial issues. When a game goes to beta, typically what's expected is that the core game is finished, and it just needs to be tested and tweaked to make sure there are no glaringly over- or underpowered features. An insane bug present in beta software indicates that the software isn't ready for that kind of testing, since it still obviously needs more testing at a much lower level. Ergo, while sane bugs are to be expected in beta software, their insane counterparts should not.

Let's look at a few examples. I could just go for some of the more obvious and high-profile bugs like the leaf-decay bug that took two and half months to solve (one "fix" of which caused the client to use up close to 100% of the computer's processor cycles) or the hundreds (217 as of this writing) of item-duplication bugs. No, I want to talk about the bugs that are really insane. The ones that betray demonic horrors lurking in Minecraft's codebase.

There are two that I've found that I couldn't attribute to honest mistakes. One is what I've been calling the "invisible staircase" bug. See, one time I had decided to build a staircase in the middle of the sky, from nowhere to nowhere. Kind of an art piece (I specialize in meaningless art pieces, by the way) to let people know that I find myself with far too much free time and extra resources. In any case, I began to build my staircase out of stone. Once I had deemed it sufficiently long, I climbed under it and removed all of its supporting cubes. When I removed the last cube, the staircase vanished. "WTF?" I thought to myself, "Did my staircase just get deleted?" So I built up a few supports again. The staircase came back. I removed the supports and it disappeared. The staircase was always actually there, it was just sometimes invisible. I then experimented some more and found that nearby blocks didn't even have to touch the staircase to make it visible. Just some blocks in its vicinity are enough to bring it out of the warp. I can't think of any reasons why a staircase's visibility would depend on nearby (not even touching) blocks. Can you?

Another bug I happened upon is the "water elevator". I had built a water conveyor (a system that uses water to transport goods from one location to another) when I discovered that if you walk directly into an empty space at the edge of flowing water, it rockets you upward as if you had jumped twice as high as normal. "Huh," I thought, "That's kind of strange." So I decided to try to build a ladder out of this effect, similar to a normal in-game ladder, but with about twice as fast a climb rate. I started my structure and found that the effect didn't work in this location. I confirmed it still worked back at the conveyor, so something must be different. Then it hit me: it's the orientation of the water flow that made the difference. I confirmed it by rotating my structure and voila it worked. I can understand an edge case where an empty square near water can behave like it has water in it. What doesn't make any sense to me is that only some squares near water, depending on the water's orientation, behave this way. Just what is going on behind the scenes to make that happen?

But that's just the thing: Notch is constantly adding new things to his code without fixing the old things. His codebase is full of insane bugs but he hasn't yet taken the time to lean back and refactor his code in a more sane way. He is surrounded by the insanity of a hobbyist codebase and would take much less time adding new features in the future if he'd just take a bit of time now (or rather several months ago) to organize his code in a more meaningful way.

What I hear a lot from Notch's first line of defense about this is that "beta" is just a name. It's just an arbitrary thing that he'd decided to call the latest version of Minecraft. That's mostly true, except from a marketing point of view this Minecraft beta is meaningful — now the game is more expensive, and purchases don't buy the customer the full benefits that alpha customers have. So though we can all agree the codebase is not beta, the game is still being marketed as such. Why? Because Notch is really bad at what he's doing.

He may be creative, but as a software engineer and marketer he is sorely lacking. He is sufficiently crazy to come up with ideas for his game, and he is sufficiently skillful to make them almost work. However he doesn't seem to be sufficiently skillful to make them work in a well organized, robust manner. Or maybe he's just lazy (the bad kind of lazy, not programmer lazy). So either he's crazy in that he doesn't recognize his own glaring mistakes, or he's crazy in that he's just ignoring them continuing to release bug after bug. No matter what perspective you take, the man is nuts.