Archive for the ‘Pontification’ Category


December 20, 2016

The other day, a friend and I were discussing various jewelry items that we liked. They showed me pictures of ones that they liked, and I looked through various lists and found ones that I liked, and they expressed some amount of surprise at my choices. In most of my life I tend to appreciate things that are simple, and kind of stark in appearance as far as aesthetics go, and the items I chose, to this friend, did not seem to fit this pattern, being items with many repeating patterns and what seemed to be a not insignificant amount of complexity. When they said this however, expressing a surprise that I would like the more complex or complicated designs, I felt there was something wrong with the statement, as these did not seem to me to be as different to me as the simple designs they had assumed I would like. I told them then, that I grew up reading “Where’s Waldo?” and that the patterns seemed kinda zen to me, simplicity hidden in their seeming complexity. After the conversation was over, I thought back on the conversation, and the statement I made, and I was not sure I had quite expressed my feelings about beauty in simple complexity, something I hope to do here and now.

When I spoke of “Where’s Waldo?” my mind was thinking not just of it, but of a number of other things that were connected together in my mind along with those books. I was thinking of tessellations in art, repeating motifs based on drawing the same shapes over and over again, interwoven with themselves. I was thinking of a concept from computer science called the cellular automata, and I was thinking of elegant computer algorithms which generate complex interactions from simple rules. All of these things to me seem connected, and all feel to me, as though they are fundamentally elegant and simple, even if the end results seems large and complex. Let me walk you through a few of these thoughts and see if I can show you why they all feel similar to me.

Fundamentally I really enjoy patterns. While I was in school, I was never a great artist, but I took a number of art classes, and the one thing that stuck out about my art, which was typically rather mediocre, was my use of patterns. I would draw pictures and then fill in each part with a different pattern, whether it be a hundred tiny stars, endless dots, lines, hashes, squares, waves, whatever. I would feel quite content spending long periods of time simply filling in blank spaces with repeated shapes and designs. And it would not just be repeating patterns either. I would occasionally enjoy drawing expanding patterns, where something starts simply and then follows a progression, growing larger and more complex following simple rules. In each of these cases, even though the piece might take a long time to draw because of the need to draw many many little bits, when it was complete, it would look unified and simple, and in my own mind at least, beautiful.

This love of patterns extended to math classes, where one of my favorite topics was finding and extending patterns in numbers. Like seeing that 1, 2, 4, … would go on to 8, then 16, or that 3, 7, 19, 55 was tripling each time then subtracting two, and thus would go on to 163. Finding the pattern in numbers, especially when it was more difficult, and initially appeared random was something I enjoyed a great deal. It always seemed to me that the fact that you could explain an infinite sequence of numbers in a few words, and thus understand the whole thing that way was incredibly powerful. I was always quite good at finding the patterns and would always do extra problems just for fun when the unit on that subject came up. Later in life these sorts of patterns of numbers would come up again in my computer science courses, when I learned about recursion and patterns such as the fibonacci sequence: 1, 1, 2, 3, 5, 8, … where each number was found by adding together the previous two. I enjoyed it there as well, able to use computers to think about and examine changes in the string of numbers based on simple changes to the rules of the patterns.

As I learned more about computer science I got to see and use even more ways one could generate very powerful and seemingly complicated results from very simple inputs. The flocking of birds, a pattern that seems somewhat random, but has its own special sort of movement can be programmed into a computer with three simple rules. The solution to the game Tower of Hanoi, where you have a stack of increasingly large rings around one of three pegs, and your goal is to move the whole stack to another peg, while only moving one ring at a time, and never putting a bigger ring on top of a smaller, has an exponentially increasing number of required moves as the number of rings increases. The solution to all sizes however, can be explained to a computer in something like ten lines of code. Coding itself has a certain aesthetic to it, in which a solution is considered more beautiful and elegant if it solves the problem in a few easy line of code, while solutions in which one has to write things out, explaining each of the possibilities to the computer in excruciating detail are considered less elegant and feel much less nice to program. And one of the ultimate examples of this, of getting incredibly intricate and interesting things out of something incredibly simple is an idea called the “cellular automata”.

Cellular Automata come in many forms. The most famous example was invented by a man named Conway, and is called the Game of Life. It takes the form of field of black and white squares, with the black squares representing life, and the white squares being empty. You can start the scenario with any combination of black and white squares, and then, over time, the black squares live and die based on simple rules based on how many other black squares are around them. A square will be “born” in a white square that is touched by exactly three black squares, and a black square will “die” if it is surrounded by more than four, or less than three black squares. With only those two rules, a simple grid of squares will change, growing and moving and dieing and forming patterns in a fashion that can really only be described as life-like. Whole hosts of mathematics problems have been explored within the confines of this incredibly simple system, and it was proven that it was possible to construct, within a system containing only a grid of black and white squares and two rules as to how they change, a turing complete computer, which means that, given sufficient time, such a pattern could solve any problem that any modern computer can solve. But even the Game of Life is more complex than some other cellular automata. Lets take a look at basically the simplest possible automata, the one dimensional ones.

The game of life is a two dimensional automata, as it uses a grid of squares that changes over time. One dimensional automata only use a single long line, not even a grid. As such, the simplest version of these automata only have three inputs. They can look at their own color, and the color of their two neighbors, on their left and right, and use that information to determine if they will be black or white on the next turn. With three different inputs that can be one of two colors, that means there will be 2^3 or 8 different combinations of inputs, and since you can choose either black or white for the output for each of these eight different combinations, this means that in total there are only 2^8 or 256 total one dimensional cellular automata. Let me give you an example of one. This is number 184.

If it and both its neighbors are black, designated BBB, then the square stays black. If its left neibor is black, and it is black, and its right neighbor is white, designated BBW, then it changes to white. BWB, or both neighbors black and it white, then it changes to black. BWW changes to B. WBB: B. WBW: W. WWB: W. WWW: W. And that is the rule. Lets take a look at it in action.

Lets start with one black square in a long line of white ones. WWWBWWW. That’s our starting spot. Since we know that white surrounded by two other whites will stay white, we can know that we can ignore all of the pattern except for the parts right next to the black square, because they will not change. The square to the left of the black one has white on its left and black on its right so its pattern is WWB, which means, if we look above, that it will remain white. The black square meanwhile is surrounded by two whites which means its WBW which goes to white. The square to the right of the black one meanwhile will change to black because it fits the pattern BWW. So if we update everything, the only thing that changes is that the black square goes to white and the square to the left of the black, turns black. So our pattern changes to look like WWWWBWW. If we look at a few generations it will look like this:





Basically, the pattern is simple here. By looking at it over time, the black square moves one to the right each turn. Not much complexity there. It gets more fun with more than one black square. The pattern still ends up moving all black squares one to the right any time there is a white space there for them to move. If there is another black square to the right though, it pauses for a turn, staying in place, and only moves on when that black square has moved on. As it turns out, this pattern ends up modeling traffic in a single lane road. If you think of the black squares as cars, they move forward when no one is in front of them, and then break when another car is right in front of them. This simple pattern of the relation between three white or black squares lets us learn interesting things about traffic patterns. As it turns out, if the density of cars is less than fifty percent, ie if a road has enough room for a car length between each car, then after a bit, traffic will unjam and all cars will be able to go full speed. If its greater than fifty percent though, the familiar pattern of the traffic jam emerges, with stops and starts. Using the model from this pattern its actually possible to figure out how fast the cars will end up moving compared to the speed they could move without having to stop. Obviously its not a perfect model, as it leaves out a lot of the complexity of the real world, but you can learn real things from this model.

So that’s pretty cool, we took a simple pattern and were able to learn something about the real world from it. As it turns out, this one pattern actually can model two other real world things as well. By interpreting the black and white squares differently, its also possible to model how sediment accumulates in hills and valleys, as well as modeling the movement of positive and negative particles which annihilate one another when they collide. This one pattern can do all of that. And its not even the most interesting of the patterns. Pattern 90 can be used to represent how trees can grow depending on availability to sunlight as well as creating a triangular fractal, while Pattern 30 creates something close to pure randomness. The most interesting of all however is Pattern 110, which was proven to also be turing complete, just like the game of life, capable of computing anything a computer can compute. A relationship between three black and white squares can compute anything computable.

Anyways, that was a fun digression, but basically, I find things created out of simple rules and patterns to be beautiful. As long as explaining how to make it is simple, I consider the thing itself to have the elegance of simplicity. Hence why I like patterned jewelry and was a bit confused when my friend expressed surprise in my choice, as I consider those things fundamentally just as simple as something that’s appearance is more straightforward. I also did a bit of thinking about my initial example of “Waldo” and I think those books are a bit different than the kind of simplicity I have described here, so I think I’ll do another post about that at some point soon. Anyways, this was just me talking about why I think certain things are elegant or beautiful, simple, even if they appear complex.

Psychological Marketing in Free Mobile Games

August 6, 2016

This post is being written entirely too late at night, not in a small part due to the subject of itself. What I will be discussing today will be a game. I’ll be describing the game, and in particular I will be focusing on the psychological reasons why the game mechanics are the way they are, and how the game attempts to influence those playing it in a number of different ways. A lot of the game mechanics in this game are in many other very similar games, so hopefully this discussion will help you to see similar patterns in other games and media, and allow you to understand how they are trying to affect you mentally.

The game in question is called “Final Fantasy: The Record Keepers”. Its a smart-phone game, for both android and I-phone. Its basic idea is both solid and kinda interesting. Basically the premise of the game is that the player is a librarian in a great library filled with both books and portraits. These portraits are magical, and contain the stories that they depict within themselves. One day the portraits start fading, a cloud of darkness covering up the pictures. The librarian character then begins a quest to restore the paintings, by battling monsters inside the paintings. While they are doing this, they begin recruiting the various heroes from within the paintings, and those heroes join them in fighting the monsters. These portrait portals open up in a sort of sequence, so you have to clear certain portraits before you can move on to other, more difficult ones, or ones later in the time line of that story.

The thing that takes this interesting enough premise, and imbues it with a great deal of fans instantaneously is the fact that the portraits represent the events of the many Final Fantasy titles, and the recruitable heroes are the many protagonists of the different games. (As well as a few antagonists.) The fantasy that this game lets you fulfill is that of making a group of different heroes from all the different Final Fantasy games, and teaming them up, letting you fight pretty much any bad guy from any of the games, while playing as any combination of good guys. The format of this battling is a simplified and sped up version of the combat system used in a pretty good chunk of the games, which is simple enough that they are able to make hundreds of different playable characters for a free to play game, and with just enough complexity that the game can be interesting, and let each character have something that makes it feel a little bit unique.

So that’s the core structure of the game, the premise that makes the game a possibly profitable product. You could take that premise and make the game in a lot of different ways, and it would likely be successful to some extent. The way they constructed it however follows the “mobile, free to play” model, something that ends up feeling a little dubious as you look into the psychological tricks involved in its game mechanics. So lets take a look at a few of these.

First, a big component of all mobile games, is that it needs to be quick to play, having the possibility of playing and doing something in any given five minutes of time. Secondly, it needs to have a lot of content, the ability for the players to just keep playing as long as they continue to find the formula interesting. As an rpg battle game, the big thing that you are going to do which will make you feel like you have accomplished something, as well as making it pretty easy to create a lot of content, is to make your characters stronger. The general goal of everything you are doing in the game is to make your guys better at battling, so that you are then able to battle harder dudes, thus enabling you to make your guys even better. Their are at least four separate ways that one goes about getting stronger in the game, and each of them uses a different sort of psychological trick, and has a different reason for being in the game.

The first component is something that is a mainstay of most mobile, free to play, games these days. That is, the concept of stamina. Every time you do something in the game, it uses up some stamina. You get your stamina back as time passes. You can also spend one of two separate types of currencies in order to restore your stamina, and enable you to continue playing if you don’t want to wait. One of these resources is something you get for progressing in the game, something that comes at a slow and steady pace throughout the game. Its rare enough that its always a bit painful to spend, but common enough that if you are frugal, you can get away with only ever using this one. The other one you can pay really money to acquire.

Now there are a couple reasons why the stamina meter exists in these sorts of games. First, they don’t want you to just beat the game in one sitting. Free to play, mobile games make their money off of little micro-transactions within the game, and if you play through the game in a year, you are much more likely to decide to buy something at some point, as opposed to if you defeat it in a week. So the stamina meter caps how fast you can progress. The second reason it exists is to be another place the game can make money. By letting you spend real money to recharge the stamina meter, the game can make some money if someone is really into the game and just wants to keep playing, and not take a break, or do something else. Every different place they can add a potential for payment is generally a good idea in terms of making money. Let me make a brief digression to discuss the one place its not a good idea.

The only place where monetizing is not a good idea is in terms of directly increasing a characters power. If paying money makes the game easier, everyone can get behind that, but games that are “pay to win”, where paying players have access to content, or are just straight stronger than free players, are stigmatized, and a lot of people won’t play those sorts of games, leading to a smaller number of players, and thus a smaller number of paying players. One might think that people who are willing to pay to be stronger would be interested in those sorts of games, but it actually has to strike a balance, because if there are no free players, then the paying players don’t feel like their money is getting them anything, because all they see is other players also paying, and thus progressing at the same rate.

Anyways, digressions aside, there is a third reason why the stamina meter exists, and I think this one is the most insidious, in that it affects your mentality when playing the most without you necessarily understanding this is happening unless you stop to think about it. The thing is, that stamina meters have a cap. If you stop playing, your stamina will restore, but only up to a certain number. After that, spending more time not playing leads to no rewards. Because stamina is a limited resource, restricted by time, you want to use your stamina as efficiently as possible in order to advance through the game as best you can. When you hit your stamina cap it feels like you are wasting your stamina. This means you have to start planning your time around the stamina recharge. Instead of just playing until you don’t have stamina, then putting it aside until you feel like playing it again, you feel like you have to play it again in three hours, or whatever length of time it takes your stamina to hit the max level. If you don’t play it again at that time, then you are wasting stamina. This feeling gives you a compulsion to play the game at many different points during the day, thus keeping you thinking about the game, getting you more invested in it, and making it less likely to forget about, or quit playing the game. On the down side, this makes the game that is supposedly supposed to be quick and not at all time consuming, suddenly a big part of your schedule, something you find yourself planning around and playing quite frequently.

Record Keepers also has a mechanic for increasing your stamina cap, which also ties into a mechanic that lets you restore your stamina without having to wait or pay anything. This mechanic is generally actually pretty nice, as it adds a bit of a strategy to how you spend your stamina in order to make sure you get the most out of it, as well as letting you go for longer and longer times before the cap is reached, meaning that as you progress in the game, you need to play it less frequently. I guess they are trying to reward the players that stick in their, because at the point where this starts being relevant, you have already committed enough time to the game that you are unlikely to drop out anyways. No real complaints here, though it does not quite mitigate the kinda messed up nature of the stamina system as a whole, who’s time consuming properties are something I am not entirely sure I can really support on principle.

Alright, so thats the stamina system explained, something that limits how much you can play the game, but not something that really directly influences your power in the game. The next few systems are all things that can influence how strong you are, and what your characters can defeat.

The first of these systems is the most simple. Every character you aquire has a level, that starts at one, and progresses up to fifty. You increase this level by defeating enemies, which give you experience. Harder guys give you more experience. Leveling up increases the basic statistics of the game. The higher your level, the more damage you do, the more damage you can take, the faster you are etc. Its all straight numbers. This is a baseline statistic that is always improving so long as you play the game. Its not super fancy or noticeable in a given instant, but regardless of whats happening, you can always see your level going up as you spend more time on the game, and see that your characters are doing more damage, not dying when they would have before, etc. This is very easy content to create, as any group of enemies will always give experience, which is something that can make the player feel like they are improving regardless of anything else. The level system has one more component to it however that is a bit more psychological.

When I said earlier that the level progressed from one to fifty, that was true, but the game allows you to increase your level cap by use of special items. You can use one item to make the max level 65 for a character, and a second rarer item to make it 80. In general most of these items are only given out during special events. These events last for about a week, and you have that time to defeat the various monsters in the event and collect these special items. The events can serve to make sure the player is always motivated to make their guys stronger, because if you are not strong enough to defeat an event, and then it runs out of time, then you are missing that content until the event repeats. These events are generally also themed around a specific game, and so it can also be used as advertisement, if there is a particular character you really like, you might find yourself coming back to the game to try and get the special event items for that character even if you had grown bored with the game before. Both of these level cap items not only break the max level, but also introduce yet another system for progressing in the game, but I am not even going to get into those systems since I have barely gotten to the point in the game where I have broken the first level cap, so I don’t feel familiar enough with those systems to comment, especially the second one, which I have not experienced at all.

Aside from levels, there are two other big ways to improve your characters. The first is with abilities, and the second with equipment. They both use different systems for progression, so I will break them down individually. Lets start with abilities.

Abilities are the most dynamic part of the combat system. They are the magic spells and the special sword attacks that make the battle more than just a series of characters hitting each other. I think there are around a hundred fifty or so abilities in the game, and each character has access to a certain subset of these abilities. The abilities are attached to a character in order that they can use it, but if you switch out a character, you can keep the abilities you already acquired, and move them over to the next character. The system that is used to make abilities is one of orbs. There are many different kinds of orbs, lightning, earth, holy, dark, etc. There are also different levels of orbs, lesser, greater, minor, etc. Every ability in the game can be acquired by trading in a certain combination of orbs. You get orbs by defeating enemies, but its not completely random, ie a fire bad guy is more likely to drop a fire orb, and only very strong enemies will drop the more powerful kinds of orbs. Because there are so many different orbs and the abilities all require different amounts of them, the game can reward you with orbs all the time, and it always feels like it is helping you work towards something. If there is a specific ability you want to get, then maybe you focus on certain kinds of dungeons in order to acquire the orbs needed to unlock it, or if you are like me, you just open up the ability shop ever day or so and look to see if collecting random orbs has led to any new abilities being enabled. By breaking the process of making abilities into these orbs, they are able to constantly give you rewards that are worth something, while also making this a slow process so that you don’t jump through all their different abilities in a few days. The rarer orbs can also be really hard to get, and sometimes you have to develop specific strategies in order to try and acquire them. Even once you have unlocked an ability, orbs of that kind are still valuable because of a process called honing, whereby you increase the number of times an ability can be used in a given dungeon. Each time you hone an ability it gives you more uses, and each time it takes more and more orbs to hone to the next level, though always the same type and rarity of orb. Anyways, the general principle here is that they are able to dole out bits and pieces of these abilities and so they have something to give you that you always want.

The last system, equipment is the one that I think is the most likely to cause people to actually spend money, and potentially the most harmful depending on the person. Equipment comes in different levels, and generally just increases the stats of the character equipped with it. As the game progresses though, it becomes more and more apparent that 99% of the equipment in the game is basically useless, and its only the special five star equipment that you really want long term. The five star equipment gives your characters special powers, and they give you way more stats than four star equipment. The question then is how to acquire equipment, specifically five star equipment. Well, you can get equipment from defeating monsters, and as rewards for beating dungeons in the game, but almost all of this is one or two star stuff, with the occasional special four star bit thrown in their. If you want to get some five star equipment though, you gotta play the lottery. That is to say, you have to do something called an equipment draw.

You get one free draw a day, where you get a random piece of equipment, which could be any level, but its heavily weighted towards the lowest level, so its almost always only one or two stars. Instead, if you want rare equipment, you need to do what is called a rare draw. A rare draw is just like a normal one, except there is no chance of one or two star equipment, which makes the chances of getting a five star much much higher, from something like 0.1% with the normal draw, up to close to 10%. The problem of course is that you need to spend one of the two currencies in the game to get these rare draws, and its random. What this leads to is a strong incentive to pay real money to try and get the equipment you want. This is because, in order to have a good chance of getting a piece of five star equipment, you generally need to get the 11x rare draw, a deal where you spend the resources for ten draws, and get eleven at once, all of which are three star or higher. Most of the time you will get one or two five stars from this kind of a draw, but you never know if you are going to get the ones you want.

Like I said before, you can do this with one currency that you can earn in the game. Generally if you use that currency, you are able to get one of these 11x drops once a week, a little bit less. It takes about that long to earn up the resources to buy a drop. Then you click it, watch your hard earned resource vanish, and hope you get some good five star equipment. Most of the time however, while you do get something valuable, you don’t get quite what you wanted, and after a week of working towards this draw, hoping the whole time that you will get this item you have been waiting for, it can become very tempting to click the little button they put right on the screen where they show your results, and roll again, pay real world money to try and get the item that you worked so hard to get a chance to get. I almost did that one time, but the amount of money was completely outside the scale that was acceptable for me due to my current living situation. If it had been cheaper however, its likely I would have dropped money on this game out of frustration that I had not gotten the item I wanted after spending a week hoping for it.

By making the item acquiring essentially a gamble, the game taps into that drive to try again and again, as well as potentially exploiting people’s gambling problems. Its also a psychological fact that people and animals are more willing to keep doing something if they occasionally get something really good, as opposed to always getting something OK, so this sort of random drop system taps into that part of our brain and either makes us drop some money on it, or at least keep playing the game for another week in order to try again.

There are a number of other systems in the game that I have not even covered, and there are a few psychological principles it exploits that I have not even mentioned, but for now I am getting super tired, so I am going to call it a night. Perhaps I will do another article on this topic in the future. Suffice to say that games can screw with your head, especially when they are trying to get you to continue playing them, or get you to pay them money. Playing this game is usually the second to last thing I do every night, as well as the second thing I do every morning, after communication with family and friends, so obviously these techniques have affected me, even though I understand them. Anyways, its something to think about when you are playing a game.

To Cipher and to Decipher

July 27, 2016

Swappin’ today and tomorrow’s themes around, because for some reason I felt like talking about some math stuff today. So, for today’s topic, we are going to go over the basics of cryptography. This is going to be super fast covering a bunch of stuff, because I want to go over the basic gist of a number of different ways cryptography can be done, and how one can go around cracking it.

To start, the type of cryptography we are going to talk about is called a cipher. A cipher is a means of hiding information by changing the individual letters and numbers and spaces to do different things. Codes meanwhile are when you replace things on the word level. So if you replace the word dog with jazz, that is a code, but if the word dog becomes agp because d goes to a, o goes to g, and g goes to p, then that is a cipher. Ciphers are generally a lot simpler to learn then codes, which can require entire books to translate, and they never run into the problem of being unable to talk about something because you never thought of a code word for it. Also, we are only covering the really big ciphers, there are a lot of different ones out there, and it can be fun learning about all the different kinds.

Anyways, first cipher to cover is called the Caesar Cipher. So called because it was used by Julius Caesar when he wanted to send coded messages to his generals. Its pretty much the simplest cipher you could imagine. Basically you pick a number, between one and twenty-five, and for every letter of the alphabet, you simply go forward by that many letters. If you get to the end, then you start back over at the beginning. As an example, if your number was one, then a would change to b, l would change to m, r would change to s, and z would change to a. If your number is three, then a goes to d, l to o, etc. You change each letter of your message to another letter depending on the number that both you and the recipient know. The number is called a key. When the person gets the message, they use the same method, just going backwards instead of forwards. If the key was one, then they would change b to a, m to l, a to z, etc. I think Julius Caesar always used four as his number, but I don’t remember for sure.

If someone has no idea anything about cryptograms, then this method works pretty well. They see nothing but seemingly random letters, and don’t know what to do with that. If you have some idea someone is using the cipher however, it is one of the easiest to crack. Since there are only twenty five different ways to make the cipher work, you can just test out each of them, and look for a message that makes sense. Twenty four of those will turn random letters into more random letters, but one of them will give you the message. The number of possible keys makes this cipher almost useless against someone who knows anything about ciphers, unless you only need the cipher to last a couple minutes, in which case the time it takes them to test twenty five different keys vs your targets one, could make this useful.

The next step in complexity up from this is still relatively straightforward, but much harder to brute force. Instead of simply incrementing every letter by the same amount in the alphabet, you can map each letter to another letter. You would take the alphabet and scramble it up, and then map from the original alphabet to the scrambled one. If we pretend the alphabet is only four letters long: abcd, then the scrambled alphabet might be bdca. In which case, every time we see an a, we map it to b. When we see b, we map it to d, when we see c, we map it to c, when we see d, we map it to a. So the word “bad” would then become “dba” in our new alphabet. To reverse it, we just map from the new alphabet back to the old, changing b to a, d to b, etc. Our key is now the scrambled alphabet, which is a fair bit harder memorize than one number, but is also a lot harder to brute force, as there are 403 septillion different possible combinations of all the letters in the alphabet. As long as both you and your intended receiver have a copy of the scrambled alphabet you can use this code quite quickly.

If we can’t just try all the combinations, and look for one that works, how can we go about cracking this cipher? Well, anyone who is familiar with the cryptogram puzzles you sometimes see in newspapers is familiar with one method. Almost all the cryptogram puzzles are messages coded in this sort of a cipher. The thing that makes them crackable as a hobby is that words are not just random serieses of letters, there are patterns. Especially if the spaces between words are preserved, it is pretty easy to figure out using deduction, that some letters have to translate to some other ones, usually starting with the one letter words translating to I or A, then using that info to try and figure out more of the words, ultimately working our way to the whole thing.

Even when you take the spaces out, it is still possible for a skilled cryptographer to deduce the code using statistics. By understanding the frequency of letters used in a given language, and comparing it with the frequencies of each letter in the code, you can generally figure out some of the letters with a pretty high degree of accuracy, especially if the coded message is long. If that fails for some reason, an even more powerful tool involves the statistics of what letters follow other letters, letting you look up statistics of letter pairs, and figuring it out from there. While it is not quite as straightforward as figuring out a Caesar Cipher, it is still pretty methodical, and skilled cryptographers can figure out cryptograms coded in this way in just a few minutes. In terms of using this in your every day life, this system is probably strong enough that most people are not going to crack it, but is not particularly secure, as any random person interested in patterns and puzzles can likely crack this sort of cipher.

For a long time, the cipher I just described was the main one used, but as people got better and better at solving them, it became less and less safe to use. People added a lot of little tricks to try and make it harder to figure out, adding extra characters that had no meaning at all, making certain letter pairs transform into a single letter, and other tricky things, but generally all of the methods fell prey to the fact that languages are filled with patterns, and when one letter is always translating to the same letter, those patters are being preserved. The next step then, is to make the letters not always map to the same one, but make it change as the message goes along. The problem of course is making it easy for the person you want to receive the message to decipher it, without having to make them carry around some kind of book that could be stolen or something. The solution that was eventually come up with involved an interesting reuse of the Caesar Cipher.

This next style starts with a keyword. This is a set of letters, preferably a little long, that both parties have memorized. For the purposes of this example, we are going to use the word “key” as our key. Lets try and encipher the word “secret” using our key. So, the first step involves adding the first letter of your key together with the first letter of your message. How do you go about adding letters together you might ask? Well, you can turn them into numbers. If we pretend a is 1, b is 2, etc all the way to z is 26, then we can easily add two numbers together. In order to make sure that we get a letter back out when we add things together, we wrap back around to the beginning if we go past 26. So in our example, the first letter of our message is s, which translates to the number 19. The first letter of our key is k, which translates to 11. We add 19 and 11 together to get 30, which is bigger than 26. So, we subtract 26 from it, in order to wrap back around to the beginning and get 4. 4 translates to d, so the first letter of our ciphered text is d. Another way of looking at it, is that since k translates to 11, we are using the Caesar Cipher with key equal to 11 for our first letter. Anyways, next we do the second letter of our key, with the second letter of our message. We get e is 5, and e is 5, which add together to 10, so the second letter of our ciphertext is j. Then we do third and third, 25+3=28 which goes to 2, so the third letter is b. Now, we get to the fourth letter of our message, but since we are at the end of our keyword, we jump back to the beginning, and continue. So we combine r with k to get c. We continue through the whole message, cycling through the keyword as many times as we need to. When we are finished, our message is translated to djbcjs. To figure it out, we do the same process in reverse, subtracting our key letters from the cipher letters, and adding 26 if the resulting number is less than 1, thus wrapping back around the other direction. We are thus able to disguise the frequency of the letters by making the same letter mean a different thing in a different part of the message.

You might think this sounds basically unbreakable, and for centuries, people thought that it was, but the old foe of ciphers, patterns and statistics ended up creating a way to figure out even this cipher. There is actually one version of this where the message is provably impossible to crack. If your key is as long as your message, and you only ever use it to code one message, then it is impossible to figure out what your message says without the key. This is called a one time pad, and is both really cool, and extremely difficult to utilize if you are sending a lot of information. If you ever think you will need to communicate discreetly with someone, and want to make absolutely sure no one will ever be able to figure out what you are communicating, then create a very long, random sequence of letters that both of you have copies of. As long as no one else sees this sequence of letters, you only use them once, and the letters were created randomly, then this is the one and only perfectly secure communication method.

Most of the time however, the key will be shorter than the message, and you will use the same key for multiple communications. In that case, its possible to use statistics again to break through the keyword cipher. As a general principle, the longer the key, the better, and the more random the key the better, but it becomes harder and harder to memorize the key as you get longer and more random, and sometimes having to write the key down can do more to compromise your security than having a less secure key. Anyways, on to actually breaking it.

So the principle that drives this method is the fact that patterns are much more common in real words then they are in gibberish. T and h come together much more frequently in real words than if they were placed randomly, and so do most consonants followed by most vowels and visa-versa. In order to take advantage of this, we go through the message very carefully, and note down any series of three or more letters in a row that is ever repeated in our message. This is a long process, and people would generally use computers for this today, though this was done even before computers by hand. Each time you find one of these matching patterns, you count the number of letters separating the first letter of the first copy and the first letter of the second copy. You keep going through the message, finding repeated patterns, and noting down how far apart they are from each other. When you get done, you will have a list of patterns, and a list of numbers next to them. Now, you take a look at the numbers, and you look for a number that is a common factor to almost all of them. So if you had 64, 32, 64, 28, 16, 32, 48, 80, you would note that sixteen divides into all of these numbers, except for one. What that means, is that most likely the keyword is sixteen letters long. Because sequences of letters are much more likely to repeat due to the way words are constructed, as opposed to randomly, you are mostly finding the patterns that ended up being coded the same way because they used the same part of the keyword. So maybe the word “the” was being coded in one place, then 32 characters later, the word “they” was being coded. Because the “the” was in the same place in the keyword, it got translated to the same set of letters in the ciphertext. The 28 we see is an example of an actual random pattern copy, which will exist, but will be much less frequent than the other examples. Anyways, after we do this, we get a pretty good idea of how long the keyword is.

Alright, we know how long the keyword is, we still don’t know what the keyword is. How does this help us? Well, that leads us back to the wonderful world of letter frequency analysis. We take our ciphertext, and we cut it into a number of pieces equal to what we think the length of the ciphertext is, in our example we would break it into sixteen chunks. The first chunk would have the first letter, the seventeenth letter, the thirty-third letter, etc. Our second chunk would have the second, the eighteenth etc. So on and so forth. Now, each chunk we have uses the same Caesar Cipher for all the letters, so we can do a separate frequency analysis on each of the different chunks, figuring out which letters likely translate into which other letters. Because each chunk is all using the same offset, and its not different for every letter, its actually even easier than using the frequency analysis from before, because once you are pretty confident on any single letter in the chunk, then every other letter is figured out for that chunk because they all use the same offset. Anyways, as long as we got our key-length correct, we can generally use the frequencies to figure everything out. Even if some of our chunks are resistant to analysis, we can use the other ones to try and deduce the letters in those chunks.

The reason why longer keywords lead to more difficulty in deciphering, is two fold. First, the longer the keyword, the less times it repeats, and thus the less chance of it making the patterns that the first part of our cracking method relies on, and also the more it will be obscured by random patterns. Even if you figure out the length, if it is sufficiently long, sometimes each individual chunk will have so few letters its hard to get a frequency analysis to work. Generally, if someone wants it bad enough and is willing to spend enough time, any version save a one time pad will eventually get cracked, but with a really long keyword, it can end up taking an incredibly long amount of time. Its that kind of thinking that eventually leads to some more modern cipher methods that are used today.

I am afraid I am out of time for tonight however, so for today I am finished, I will try and do another post about modern ciphers on another day. If you want to learn more about any of these ciphers, or try and use/break them, do some research online. The first one is called the Caesar Cipher, the next is called the Substitution Cipher, and the last one is called the Viginere Cipher. As mentioned before, the Subsitution Cipher is one of the most common recreational ciphers to break. The Viginere Cipher requires a lot more math generally, and more time, so its not very common to crack relationally, but the thrill of actually doing so is worth doing at least once, so I would recommend trying your hand at one of those as well. Here are three messages, the first coded in Caesar, the second in Substitution, and the last in Viginere, if you want to try and crack them.

ro fjbqrwpcxw jrwc pxrwp cx urbcnw cx mrblryurwnm mrbbrmnwcb cqrb rb cqn mroonanwln cqrb trm rb xdc

zitkt vql ziol aofu lozzofu of iol uqkrtf qss qsgft vitf iol wkgzitk of iol tqk hgxktr q sozzst woz gy hgolgf. lzgst iol wkgzitkl ekgvf qfr iol dgftn qfr iol vorgv lg zit rtqr aofu vqsatr qfr ugz iol lgf qfr lqor itn solztf aorrg. oct wttf aosstr qfr ozl ngxk rxzn zg zqat ktctfut gf esqxroxl aoss iod jxoea qfr estqf qfr ztss zit fqzogf viqz q ykqxr it vql. zit aor lqor kouiz oss rg oz wxz oss fttr zg rg oz ekqyzn. lg ziqz fg gft voss lxlhtez dt oss stz gf ziqz od q rqyzn.


How a Computer plays a Game

July 21, 2016

When you hear about a computer thinking a hundred moves ahead, or twenty or whatever, what exactly do you imagine that it is doing? How does knowing all the possible moves help it win? Even if the computer knows what all the possible moves are from a given move, how does this help it decide what to do? There are a lot of possible answers to these questions, but a lot of them make use of an algorithm called MinMax. Said algorithm is going to be the topic of discussion today.

The principle idea of MinMax is incredibly simple. The title says it all. The MinMax algorithm will choose the choice which minimizes the maximum possible value for your opponent. That is to say, you make the move that will make your opponents best move as bad as possible. You look at what the game is like after each different move you could make, and you choose the move that gives the opponent the worst options. If the game only lasts two moves, one move for you and one move for them, then this is easy, but if its like most games, and lasts longer than two moves, then we need some way of figuring out what the opponents best move is. Thankfully, we have this great algorithm called MinMax that can help us out with that. So, in order to find out what the opponents best move is, we assume the opponent is also using MinMax, and that the best move for them, is the one that leaves us with the worst possible best move.

This might sound a bit confusing, so lets break it down with a few simple examples. Lets pretend we have a really simple game. It lasts three moves. You go, then your opponent, then you go again. The game takes place on a very simple board, with only five spaces, all in a line. Each space has a number on it. There is a single piece, and each turn the piece can be moved one space, or kept still. The piece starts in the very middle, and when the game ends, you get a number of points equal to the number on the board where the piece is. You want as many points as possible, your opponent wants you to get as few. The board looks like this [10,-10,0,-1,1]. So the piece starts on the zero square, and can move left or right each turn. The first choice then would be to either stay on zero, go to the negative ten, or go to the negative one.

So, lets start with the MinMax algorithm. We want to pick the move that minimizes our opponents best move. We need to know what our opponents best move is if you go to the -10, what it is when we go to the negative 1, and what it is when we stay on the zero. So, for each option, we pretend like we did it, then look at what our opponent would do.

If we go to -10, our opponents will then use MinMax to find the best move. The opponent’s choices are to go to the 10, stay on the -10, or go to the 0. They will choose the move that leaves us with the worst possible best move. So lets look then at their first choice, to go to 10. If they go to 10, then on our last turn we have the option of staying on 10 or going to -10. Obviously our best move would be to stay on 10. So, if they go to 10, then we get 10 points. If they stay on -10, then on our last turn we have to choose between 10, -10, 0. Again, we are going to choose 10. Finally, if the opponent moves to the 0, then our options are -10, 0, -1, which means we will pick 0. So our opponent wants to minimize our best moves value, so they will choose to go to 0, because that move makes our best move 0, while the other two moves make our best move 10.

Now we know what our opponent is going to do if we go to -10. We then repeat that procedure for staying still, and going to -1. It turns out this is a really terrible game, because our first move doesn’t matter at all. All three moves will end up having the opponent move us back to 0. As such, there is no optimal move for our first move and we can pick one arbitrarily. Then our opponent will make the best move from their position, and we end it by going to 0, which will always be the best move for us. Its a game that will always be a tie if both players play to their best, just like tic-tac-toe.

Now that we have seen an example of how it works, you can kinda see how it might work in a longer game. Assuming you have the power to check all the possibilities, the MinMax algorithm will always find the move that puts you in the best position you can get at the end of the game. The problem of course is having the computation power to do that. In our little tiny game, we only had 3 options each turn, and only 3 turns, but it still took a paragraph or so to write out all the different ways that game could play out. As the number of turns one has to look ahead increases, the computational complexity increases exponentially, making it almost impossible for even a really good computer to look more than a dozen or so moves ahead in a reasonably complex game. If you can’t look ahead to the end of the game, how do you decide which moves are good or bad in MinMax then? In our example game we were able to MinMax all the way to the final score and work our way back up from there, but if we are applying this to Chess or something, and twelve moves in the future no one has won or lost, how do you use this?

The answer is something called a heuristic. A heuristic is like a mathematical guess. Its turning a situation that you don’t understand perfectly and turning it into a number. In Chess, if you wanted a number to determine how good you were doing, you could use pieces captured as a heuristic. A game where you have taken three pawns is better than one where you have taken one. A game where you took a knight and bishop is better then one where you only took a bishop and two pawns. You can assign the captured pieces point values, and when you get as deep as you can go, maybe six or twelve moves in, then you just use the heuristic as your point value. Obviously if the game will end in the next twelve turns this will override the heuristic, and you will use the real values, but once the computer has thought as deeply as it can with MinMax, it has to pick a value to compare the different possible game positions, in order to decide what is a good place or a bad place to be. These are not perfect, and it can lead to the computer making bad decisions if the opponent understands the heuristics and could manipulate them somehow, but its generally the best that can be done.

Actual competitive programs are generally a bit more complicated than this, with ways of modeling certain chains of moves as one move because they always play out the same, and different things like that, but the basic principles I just talked about make up the MinMax algorithm, something you can use to make a reasonably smart computer program to play any given games. As long as you can come up with a way to guess how good the board position is with a heuristic, you can use MinMax and the computer will find the best possible position according to that metric.

The only real limiting factor on the effectiveness of the MinMax algorithm, aside from the exponentially growing computation requirement, is the fact that it assumes the opponent is just as good as it is. If you have some special knowledge of ways the opponent might make a mistake, then potentially you could come out of a game better than the MinMax algorithm would have if they played the same person. Still, if you are playing on the highest level, you have to assume your opponent is going to do really close to the best thing, so it is rare that this ends up mattering. If you were convinced the opponent was literally the worst player ever, and would always make the worst move, then you could probably write the MaxMin algorithm to find the best way to play against them, maximizing the worst possible move on the assumption they will play it.

Anyways, this is just another look into the way computers can think about different problems, and while its probably a little dry, I think it can give you a method to think about games as well, and think about how computers are playing them.

Really Big Numbers

July 14, 2016

I am going to talk about some cool math tonight.  Basically I am just going to be explaining some ways to talk about big numbers that most people have never heard of.  It might be kinda short because I need to get to sleep fairly soon, but I hope it will be interesting.

To start, lets establish a pattern.  One of the simplest things you can do with a number is to count up by one.  To go to the next whole number bigger.  Its how we first learn to add numbers, by counting up a number of times equal to the amount we are adding.  We want to add 4 to 3, we count 3, 4, 5, 6, 7.  When you add a number, it means you are counting up that many times.  So we can use counting in order to understand how to add.

Next we can use adding to learn to multiply.  If we want to multiply a number, we are just adding that number a number of times equal to what we are multiplying by.  So if we multiply 3 by 4, we are saying 3+3+3+3.  We are adding 3, 4 times.  So we are using addition in order to understand how to multiply.

After multiplication is exponents, or powers.  If you want to take a number to the power of another number, that just means you are multiplying by that number a number of times equal to the second number.  So if we take 3 to the fourth power, we are just multiplying 3*3*3*3.  We are multiplying by 3, 4 times.  So we are using multiplication in order to understand how to take powers.

Now most people know how to do all of these things, even if they might be a bit hazy on powers, and if they stop to think about it, it is pretty obvious they are all built on top of one another.  When they are all presented in an ordered fashion like this however, it becomes easy to see that the pattern can continue.  Let me show you the next step then.

After powers, is an operation called tetration.  It is so called because it is the 4th level of operation, if you start with addition as the basic operation instead of counting.  If you want to tetrate a number by another number, you simply take that number to the power of itself a number of times equal to the second number.  So if you want to tetrate 3 by 4, then you would have 3^3^3^3, where ^ is the symbol commonly used on computers for powers due to the difficulty of using the normal superscript notation for powers.  We are going to the power of 3, 4 times here. Thus we are using powers in order to understand tetration.

A couple of interesting things to note in terms of tetration.  First, the representation.  It is usually looks like taking to the power, except the small number is in front of the number instead of after it.  So the tetration of 3 by 4 discussed above would look like a tiny 4 hanging in the air followed by a normal sized 3.  If you want to write this out on a computer, you use two ^s, so the above 3 tetrated by 4 would be 3^^4.  Another important thing to understand is that when you are taking the powers in order to find the answer, you start at the highest point and work down instead of working up.  As an example, if we had 3 tetrated to the third, it would look at first like 3^3^3, then 3^27, because we solve the furthest out operation 3 cubed equals 27, so we replace the 3^3 at the end with 27.  Then we would take 3 to the 27th power, which works out to be 7,625,597,484,987.  If we worked the other direction instead, and changed 3^3^3 into 27^3, we would only get an answer of 19,683, which is a fair bit smaller.  So its important that you go from the top down if you are using normal notation, or from right to left, if you are using the computer notation.  The next notable thing is how fast tetration grows.  Lets look at some examples.

2 tetrated by 2 = 4

2 tetrated by 3 = 16

2 tetrated by 4 = 65,536

2 tetrated by 5 = 2.00353 × 1019,728  This is a number with almost 20,000 digits.  If I wrote it out longhand it would be longer than the rest of this article all together by a significant amount.

3 tetrated by 2 = 27

3 tetrated by 3 = 7,625,597,484,987

3 tetrated by 4 = A number with 3 trillion digits.

3 tetrated by 5 = A number who’s number of digits is not even expressible in standard notation.

4 tetrated by 2 = 256

4 tetrated by 3 = 1.34078 × 10154 A number with 154 digits

4 tetrated by 4 = A number who’s number of digits is a number with 153 digits.

4 tetrated by 5 =  A number who’s number of digits has a number of digits not expressible by standard notation.

As you can see, these numbers get pretty absurd, pretty fast.  Still, tetration is obviously not the end of what you can do.  You can do something called pentation which is the next step, taking a number and tetrating it a number of times equal to the second number.  This can extend indefinitely, and it does not make sense to keep coming up with unique notation for each potential operation.  Because of this, a guy called Donald Knuth, famous in the programming world fro writing a series of books on the fundamentals of algorithm creation, created a notation called Knuth’s Up Arrow Notation.  Basically it involved putting a number of upwards facing arrows between the two numbers, with the number of arrows indicating which operation you are using.  One up arrow is powers, two up arrows is tetration, three is pentation, four is the next one after that.  While the ideal depiction of the arrows includes a full arrow, online we simply use the ^ symbol for the arrow.  So ^ is powers, ^^ is tetration, ^^^ is pentation and so on.  As you can see, we have already been using Knuth’s Up Arrow Notation with the computer depictions.

One problem with Knuth’s up arrow notation is that depending on what you are doing, the number of arrows can sometimes make the notation unweildy.  If you are doing the 10th up arrow operation, you don’t want to be writing ^^^^^^^^^^ each time between your numbers.  As such, once you get past five or six arrows, it is conventional to simply write the number of arrows in a superscript next to your arrow.  Online you put the number of arrows in parenthesis after the initial carrot symbol.  So 3^^^^^^4 could alternately be represented as 3 ^(6) 4.  Using this notation we can now talk about one of the biggest numbers ever actually useful for anything, a number called Graham’s Number.

Graham’s Number was a number used as an upper bound for a mathematical proof in the field of combinatorics, the mathematical study of combinations and permutations of things.  The number is generated in 64 steps.  The first step is to take 3 ^^^^ 3, ie 3 taken to the operation one above pentation by 3.  This is a number so incomprehensibly large, that you could not fit it into the universe if you subdivided the entire thing into plank volumes, a unit of volume that is the smallest it is possible to measure.  We call this number G1.  So already we have a number generally beyond comprehension and conventional notation in any sense.  Then to get G2, we take 3 and we put G1 up arrows in between it and another 3.  So using our notation, it is 3 ^(G1) 3.  So this is a number generated by increasing the rate of size increase by an already incomprehensible number.  For the next 62 steps we repeat the procedure, with G3 having G2 up arrows and so on.  At the highest level G64, we have Graham’s Number.  I am not even going to try and explain how big this is.  Each step is increasing the size of this by increasingly incredible incomprehensible increments, and their are 64 of these steps.

So with that explanation of Graham’s Number, that’s where I am going to stop today.  A few things to note before I sign off though.  First, the number that Graham’s Number is an upper bound to has a lower bound of 13.  So that number is somewhere between 13 and Graham’s Number.  Actually, a smaller number was found later, which puts the upper bound at 2^^^6, a still incredibly large number, not expressible in normal numerical notation, but much much smaller than Graham’s Number.  So the answer to the problem is somewhere between 13 and this new number.  Additionally, while often considered the largest number ever useful for anything, it has been supplanted by even larger numbers as time has moved on. Some of these numbers are so large that they are not even expressible using Knuth’s Up Arrow Notation in a reasonably concise manner, and their are other notations for talking about even bigger numbers.  One of the most famous is called Conway’s Chain Arrow Notation, which I may at some point right another post about, but currently am leaving for another day.  If you are interested, look it up.  Anyways, all this is just a math thing that I think is really fun and interesting.  I might try to do another math related post next week if I can find something equally fun.  So long, and happy imagining of numbers beyond imagination.

Asymmetry as Game Mechanic

July 13, 2016

Last week I talked about the reasons one might conceal information from some players in a role playing game.  I also talked about reasons one might not want to do so.  It was a general overview of the topic and was quite broad.  Tonight I want to focus in on a couple of possible uses for knowledge asymmetry that are aside from the general, situations that very intentionally use this to pursue some end.  The two topics are competitive tabletop role playing games, and games that use real actual knowledge as a game mechanic, as opposed to using a number or an ability.

When on talks about competitive rpgs, we are discussing the subset of games where the players of the game are playing characters who have diametrically opposed motivations, where it is an intentional and possibly required part of the system that the characters will compete and attempt to defeat one another in order to achieve one goal or another.  For people not familiar with tabletop games, this might sound like a bit of a weird thing to call out as being special.  Most games are competitive, most games have you working against each other in order to win.  Their are a few games that break the mold, but generally the ability of a human being with which to struggle is what makes games fun and engaging.

Role Playing games typically change this situation by the use of the Dungeon Master, who plays the world around the characters, simulating opponents and allies in any given conflict.  The players are still able to try and win, to some extent, to have their characters succeed, but the DM is divorced from the normal game process and instead focuses on making the game as fun as possible, “winning”, in a meta sense, only if the game turns out to be fun and engaging for the whole group.  You might say the DM is almost playing a separate game, and the actions he or she takes in that game, are what allow the other players to play theirs.  DM role philosophizing aside, the typical rpg is a a cooperative endeavor for the players, the characters all serving as friends and allies in some sort of quest together.  Occasionally their may be inter-party conflict, but its rare and generally discouraged in order to maximize the fun for everyone.  Their are some games and some players however that enjoy the conflict of competing against another human being trying their hardest, or at least enjoy the social dynamic involved, and so occasionally, you will get games in which the characters are competitors and not allies.

As a further caveat, I think most such games still have a big element of cooperation to them.  One of the greatest strengths of rpgs is their ability to accommodate creativity and wild and crazy actions, and by allowing such things, the systems almost always involve a fair bit of subjectivity in their rulings, something that is rarely present in other competitive games, where the rules are the framework in which you oppose each other.  In rpgs, you have to compete on some level, and still work together to find good interpretations and whatnot on another.  Typically most of the subjectivity is pushed to the DM, who is theoretically neutral, and so usually their is not many problems.  Still, as games enter into more and more conflicting territories, the rules tend to get denser, less is left up to DM fiat.  No one wants their cool master plan to fail because the GM likes the other person better.

The other thing that becomes much more important in a competitive campaign is the separation of player and character knowledge.  While its frowned upon if a player breaks that divide in a cooperative game, if someone does something that screws you over in a competitive game, and effectively cheats, you are going to be understandably upset.  The surest way to mitigate that, to prevent even the possibility of someone gaining a competitive advantage from out of character knowledge is to limit that knowledge.  A player only knows something if the character does.  In tabletop games this is generally restricted to the more important bits of information, with generally superfluous info being left over to the players to deal with themselves, because generally their is a pretty steep cost in time when you are giving different information to different players.  When you are all sitting across the table to each other you usually have to either communicate through passed notes, or you have to leave the room, and have a discussion in another place before returning.

In general the reasoning behind this is the same as for the normal secrecy used to prevent out of character knowledge, just with a bit higher stakes.  Typically the adventurers will succeed in any given adventure in a cooperative game, and using the out of character knowledge to help cheapens the experience a bit, but doesn’t generally change the outcome much.  The DM has the ability to adjust the difficulty of the game, so if something happens and the OOC info creates a problem, or makes an encounter to easy, they can always just make a new challenge, or adjust the difficulty with other factors.   When it happens in a competitive setting however, when another player might lose the game because of this, or worse, have their character taken out of the story, and thus lose agency in the game, then their is a big problem.  It also just makes it a lot easier to be devious and inventive if you are working with what you have, if you have the ability to use information disparity to your advantage.  Even if everyone trusted each other not to use the info as a competitive edge, it would still influence your thinking in the encounter, and potentially prevent strategies that could have relied on that information gap.  Information asymmetry in competitive games serves to make the game more fair, allows the players to express themselves and compete with all of their skill and ability, and prevents player conflicts based on suspicions of cheating.  While I am sure their are games out their that are both competitive and information symmetric, while solving the problems mentioned above, generally the asymmetric solution works best for competitive games.

Now we can move on to games where information is part of the mechanic.  Generally what a character knows is something that is very easy to change.  As they learn new things, they get to use those things to an advantage, and act on those things.  When knowledge is too mechanically useful however, character knowledge can sometimes end up being restricted by various narrative tricks in order to make sure the players tack close to each other in terms of statistics.  The specific situation where this occurs the most frequently, is the way magic works in most games.  Or more specifically, the way learning of mechanical, combat related things works.  Generally, games have some sort of system in place to control how powerful characters are.  Maybe its levels, with each level making you stronger and stronger at being a barbarian or a wizard.  Maybe its character points, where every ability in the game is tied to a point value, and you can only have that ability after you have earned enough points.  These rules are designed to make the game predictable in terms of how effective the characters can be so that the DM can plan appropriate encounters, while also serving to keep all the players on roughly the same plane, so that one person doesn’t feel powerless or left out.  Both of these things are useful and generally should be sought, but sometimes, you can explore a situation where those things become less true, and in so doing, open the game up to different mechanics, different ways of playing the game.

The example I am going to use, is a game where the magic spells are something that the player, or their character can actually learn the steps, where their is no mysterious energy source restricting spells to those above level five, or where spells are not so incredibly complicated that it takes years of study, or a few hours killing demons before they can be understood.  If you make the magic system something where if someone figures it out, and is able to do the requisite steps, then it occurs, you open up a lot of possibilities.  It allows you to try and observe the enemy wizard and figure out how they are doing what they are doing.  It puts you in a situation where you can only do the secret death spell if you make sure and leave no witnesses you don’t want knowing how to use it.  By taking the rules that govern how to activate magic, and making them specific and concrete instead of wrapped in a game mechanic cocoon, you really open a lot of doors.

There are of course downsides.  If you don’t give the players some reason to conceal this magic from others, and anyone can do it, then you need to find a reason why everyone doesn’t use it and have shared it already.  You need to deal with the consequences if the player starts teaching these magics to everyone and their brother, as well as deal with the fact that a powerful wizard could potentially be figured out and their powerful magic taken by the players.  You need to deal with characters that were not interested in magic, and would prefer to be good with a sword being forced by utility to turn to magic instead, or with characters who designed their characters to be good at magic, but now have no special advantage over anyone else.  You also need to deal with the fact that players will almost surely share this info with each other, so everyone can end up with the same powers, and it can feel samey.  All of these are problems that can make this sort of thing an issue.  Still, they are things that can be overcome.  Adding in story reasons why sharing this information is taboo or might not be the best idea can help, as well as putting the characters into situations where they are a bit competitive, but still working together, perhaps servants of different nations trying to complete the same objective but without revealing state secrets.  I think the possible new options this sort of a system open up are worth the difficulties required to keep the game engaging and challenging, at least in some games, definitely something worth trying.

Another possible use of asymmetric information built into the structure of the game would be providing initial information to players based on their character creation choices.  If cultural and racial differences in knowledge, or even assumed knowledge could be passed on to the players, it could be really interesting, especially if their were conflicting views on something.  If one player thought one thing was true and another something else, and they both thought the other agreed with them, it could create some cool situations.  Another cool possibility is having only limited and perhaps stereotypical information about other cultures from the get go could be cool.  If the elf player doesn’t know anything about dwarves except a few rumors and stereotypes, it gives the dwarf player a chance to share stuff, or have the elf character learn things in play about the other character.  Racial prejudice and misinformation is not right for every game, but by limiting information, you can make it an interesting thing to explore, by making the experience more real for the players.  It makes it easier to empathize with and understand a situation or conflict if you have an idea what the folks in that situation are going through, and information asymmetry can help to make the game more real or more immersive, and this let new and interesting stories and characters unfold.

Anyways, I think the reasoning why and the reasons for information asymmetry in a typical rpg were worth exploring, as well as the reason why not.  Once you have that information  you can use it to explore new options in rpgs.  It opens up new vistas, and I hope I gave you some ideas and some insight into the landscape.  RPGs are a really interesting experience, bringing together all sorts of different disciplines and breaking a lot of boundary lines between games, acting, storytelling, and social interactions that I think is really powerful.  Having a better understanding of this field and finding new ways to use the basic structure of the rpg to tell new stories is something I am really interested in, and I hope I was able to convey some of my enthusiasm.  See you next week for more on RPGs.

For want of a Title

July 7, 2016

I originally wrote that on Thursdays I would be writing about computers or programming, and while those are both things that I care about a fair bit, the kinds of things that I would probably talk about most of the time if I were to talk about programming would be pretty technical, and so I think I shall have to figure out something else to fill the Thursday slot.  I shall endeavor today to talk a bit about those topics in a very general sense that should be comprehensible without formal training, but I think on later Thursdays my topic shall change to something else.

I am afraid that I also don’t have some sort of overarching goal for my writing today.  I found myself unable to come up with a title because I didn’t really know what I wanted to write about, and I only started writing after a couple hours of distracting myself with other things because I didn’t know what I wanted to write about.  I think for myself right now it is more important to keep up the streak of writing every day than it is to make sure everything I write is good however, so hence this post.  Basically, expect to today to ramble on about a few disjointed topics, and potentially to be not very long, because the power just died at my house and I only have a limited battery life to write this with.  With those warnings out of the way, lets jump into the soup!

I suppose the easiest first thing to talk about is the topics in the world of computer science that I am currently interested in.  I have been trying to learn how to make something called a compiler on one hand, and on the other hand I have been endeavoring to understand and use a style of programming called “Functional Programming”.  These have been the general themes of my computer science exploration as of late, though I occasionally leap off into other waters.  I am going to give a basic explanation of each and try to explain why I think they are cool.

First compilers:  A compiler is something that takes a piece of computer code written in some language, then turns that into something that the computer can read or understand.  Its kind of like a translator that goes from a language that is more human readable and able to express more ideas at once, and turns it into a language that a computer can understand, that is broken up into very simple ideas repeated many many times.

As a sort of example, lets pretend we have a computer that understands how to do a few things.  It can read a number, it can increase a number by one, it can check if two numbers are equal, it can save a number, and it can print out a number.  If we wanted to make a computer that only understood how to do those five things learn to add, we would need to go through a bunch of steps.  We would have to read in the first number we wanted to add.  Then we would need to save that number.  Then we would would need to read in the second number we wanted to add.  We would need to save that number as well.  Now to add the two together, we would need to increase the first number by one a number of times equal to the second number.  In order to do that, we would have to add one to the first number, then add one to another number that started at zero.  Then, we would check if the number that started at zero was equal to our second number.  If it is, then we know we successfully added the first and second numbers together.  If it isn’t than that means we still need to keep adding one.  We just keep repeating the three steps, add 1 to the first number, add 1 to the number that started at 0, then check if the number that started at zero equals the second number.  Once we have done all of that, then we have successfully added two numbers together.

As you can see the way computers do things can be both a bit hard to follow, due to the way their thinking is different than ours, and incredibly boring.  If you are telling the computer what to do, you don’t want to tell it add 1 five times each time you want it to add five.  So what you can do is make a compiler that understands something closer to the way a human thinks, and have that translate it into the way that the computer understands it.  In our example, our compiler could take something like “3 + 6” and turn it into the series of many simple instructions I mentioned earlier that would add six to three.  Writing a compiler involves a lot of steps, as you have to find ways to convert your new language into the old one, interpret the inputs in the correct way, and sometimes even change the actual instructions into something that will output the same thing but faster.  In the example above, the second number determines how many times you have to add 1, so you always want the smaller of the two numbers to be the second, and the larger the first.  Doing 3+6 would be 3+1+1+1+1+1+1, but if you flip them around, it could be faster, 6+1+1+1, and a well written compiler could figure that out, and write the machine code in the second way, even though we wrote “3+6” in our language.

Anyways, learning how to do this, how to help a computer translate languages is something that is interesting to me on a couple levels.  One, I spend a lot of time programming, and I think having an understanding of the process my code goes through in order to be understood by the computer is valuable to me.  Additionally, being able to write a compiler means that should the mood strike me, I could invent and implement my own computer language.  There are a great number of silly programming languages out there, that were written to be intentionally absurd, and making my own brand of silly language, that looks perhaps like a magic spell or a cooking recipe instead of a piece of code sounds enjoyable to me.  Also potentially I would have a specialized project where making a language specifically for interacting with that project would make sense, and knowing how to construct a compiler would enable me to at least consider that option.  One must never forget the wise words of GI Joe.

Our second topic then is the idea of “Functional Programming”.  I am not confident in my ability to explain this particularly well, but I will do my best.  In order to understand what functional programming is, first its important to understand what a function is in mathematics.  In math, a function is process that takes some number of numbers and gives one specific output depending on the inputs.  f(x)=x+1 is a function, named f, that takes one input, called x in this case, and then outputs that number plus one.  So if we put 3 into our function f we would get 4, if we put 8 in we would get 9.  We would usually represent this with f(3)=4, or f(8)=9.  You can see that you are taking the function f of 3 or the function f of 8 in those examples and it is telling you what the output is for those numbers.  If we made another function called g we could define it g(x)=2*x.  In this case if we take a number and put it into function g, we would get the number out multiplied by 2.  So g(3)=6 and g(8) = 16.  Functions can take more than one input, for example, you could have h(x,y)=x+y.  In this case, the function called h takes 2 numbers, and outputs one number, which is those two added together.  So h(1,2)=3, h(8,5)=13.  The important thing about a function is that it takes some number of inputs, and for each combination of inputs, it has exactly one output.  If you take f(9), that is going to 10 every time.  No matter how many times you take f(9) the answer will always be the same.

In more advanced math, and in programming the concept of a function is expanded to more than just numbers, and they can have better names than f, g, or h.  If I am writing a program, I can make a function that takes a word as an input and outputs a sentence, or takes numbers and outputs shapes.  A simple example would be a function called hello that accepted a name, and then greeted you.  You could define it as hello(name) = “Hi ” name ” how are you?”.  So if we put in Jack we get hello(Jack) = “Hi Jack how are you?”.  That’s a very simple example, but things like that are all over the place in programming.  It can be very nice to make a function to do something that you are going to want to do many times.  It also makes it easier to understand what you are writing if you use functions with names that tell you what they are doing.  If I wrote a piece of code that looked like this: makeUpperCase(“hi tim”), you could be pretty sure the output of that function would be “HI TIM”.  If you name your functions well, it can make your programs easy to read and understand, which is very useful for when you are working with other people, or even if you come back to your code after a few weeks or months away from it.

Alright, so I think I have explained basically what a function is at this point, now the problem is explaining what exactly makes something Functional Programming, because programming in any language more complicated than machine code usually has functions in it.  Is all programming Functional Programming then?  Not exactly.  What Functional Programming is somewhat dependent on comparing it to the other alternative, which is called Imperative Programming.  Now the way that they are described as being different, is that functional programming involves describing what your program does, and imperative program involves describing how to do it.  What this means in practice, is that there are certain programming techniques that are typically used in Imperative programs and imperative languages, such as loops, objects, and modifiable variables, that are eschewed by function programs and Functional languages, in favor of more focus on function use, and the ability to have functions create functions, and the ability to use bits and pieces of functions.

There are a lot of different reasons why each of the two different styles are used, and they are generally each better in different situations.  The main reason why their has to be a divide, is that functional programming languages use concepts in the mathematics of functions in order to make some of their advanced features work, or at least to allow the program to check that you are using them correctly, and the imperative techniques, while powerful, and useful in their own context, make functions in programs different enough from functions in math that the techniques can’t be ported over, and some of the powerful features of functional programming can’t be used.  I am afraid that the discussion of what exactly these techniques are is a bit beyond my ability to explain effectively, but suffice to say that the idea that a function has exactly one output for each set of inputs is important for the functional techniques to work, and that certain imperative techniques make that not true, ie you can input the same thing at a different time, and a different answer comes out.  The imperative techniques that cause this to happen, specifically object oriented programming, are very powerful, and so are used in situations where they are more important than the advanced powers of functional programs and visa versa.

Anyways, the reason I am so interested in this, is that for the longest time I was not aware of the difference between these things.  When I was taught in college, I learned imperative programming exclusively, and some of the ideas that are unique to imperative programming were explained as being fundamental to effective programming.  From my understanding this was due to the fact that a large number of the types of programs the industry needed coded in the 90s and 00s were ones done more effectively with an object oriented, imperative style.  Since the different styles are really different in the way they make you think about solving a problem, it was likely deemed useful to immerse us in the style that would be useful in the industry.  In recent years there have been a rise in the areas where functional programming is more effective, and so it, and those spreading its gospel have become more common.  I heard about it, decided I wanted to learn about it, and so I have begun on that journey.  Some of the stuff you can do with functional programming is really really cool, and so I am glad I have started learning about it, and I hope that if you have any interest in programming, you consider learning a bit about both styles before getting yourself stuck into one or the other.

Anyways, those are the things I have been spending time on recently in the world of programming.  I hope I was able to explain stuff reasonably well so that it wasn’t incomprehensible.  I also hope that my inability to decide on the capitalization of words has not driven anyone to insanity.  Anyways, tomorrow is a post on my other blog, and then Saturday will be something creative.  I will be trying to think of a new topic to potentially replace programming for next week since I had a hard time thinking about what to write that would be both interesting and would not require a large amount of background knowledge.  If I think of something cool in the world of programming to write about, maybe I will continue with this next week, but if I come up with something else, well that’s OK too.

Asymetric Information as a Narative Tool

July 5, 2016

So Tuesdays I said I would talk about tabletop role playing games, and so that is what I will be talking about today.  Incidentally, the short story from a couple days ago was connected to a game I am currently playing in.  The character Nettle is my player character in a game my friend is running, and I took the opportunity to expand her backstory a bit with the short story, as well as taking the opportunity to start the short story with a strong feeling of world, as there is a lot about the setting that has already been decided.  Anyways, today we are going to talk about who gets to know what, and why in tabletop rpgs.

In the traditional rpg set up, there exists a fair bit of asymmetry between Dungeon Master knowledge and player knowledge, but generally fairly little asymmetry between players.   The only real exceptions would be if the DM wanted to keep certain things secret from some of the players that only one character would know, such as if a player’s character was possessed or something, or if a character has a certain special secret that they set up ahead of time with the DM, like if they are secretly the daughter of the big bad, and they want to spring that on the other players for dramatic reasons.  Other than that, anything one player knows, every other player has the option of knowing, there is rarely secret information between players, even if there is stuff that their respective characters might be keeping from each other.

On the other hand, in the traditional system, the DM usually has a ton of secrets.  Any part of the world that the characters have not explored or heard about is kept secret from the players as well, during combat the exact statistics of the enemies are rarely presented, and anything the DM wants to be a surprise in the story, is kept from the players.  I want to stop for  a moment and try to analyze why each of these different secrets are kept.

First lets look at the motivations for hiding story elements.  I believe this is largely a function of the fact that most people are interested in being surprised by a story, or learning something new in a story, as opposed to just roleplaying a character who is surprised or is learning something.  In most forms of narrative media, discovering and following along with the plot is something that is done in a set order and with the intent of discovering things for oneself.  This is why people care about spoilers for movies and tv shows, they don’t want to experience the events in the wrong order, and lose the surprise.

Similarly, players don’t want to experience events in the wrong order in a game either.  It would be entirely within the realm of possibilities for a GM to tell their players “At the next castle you will battle a troll and then discover the fact that the princess is secretly a ninja chipmunk.”  Traditionally that would not be what players want to hear, as they would rather experience the troll “first hand” and discover the secret of the princess along with their character.  So in terms of narrative, you could almost say the secrets are something of a social contract in order to allow players to experience things together with their character.

Another social contract present in most traditional tabletop games is the clear separation of in character and out of character knowledge.  Just because you yourself know how to make gunpowder or build a calculator, does not mean that your characters have this knowledge, and it is generally considered bad form, or even “cheating” if you simply say your character is going through the steps to accomplish something that they have no possible reason for knowing.  Similarly, using the knowledge that the characters are inside a game that is supposed to have fun and reasonable challenges, in order to have your character fight the captain of the guard because you think the DM wouldn’t make her super strong, or you saw her stats written down in the DM notebook is entirely outside the bounds of acceptable play for most groups.

Sometimes it can be really hard not to mix these two things together.  If one of the characters knows that the guy in the floppy hat is named “Ragdabit” and keeps calling him that out of character, one might accidentaly start calling Ragdabit by his first name, even if your character doesn’t know it.  Or if the party is split up and one group discovers something that effects the other party, it can be hard not to take this knowledge you know as a player and use it to help out your character.

It is for this reason, as well as preventing players who actively want to “cheat” from doing so, that many DMs will strive to keep character and player knowledge as close to each other as they can, so that players will not accidentally spread the knowledge to their characters and in general no one has to worry about knowledge transmission along the 4th wall.  This can be another reason why a DM would hide narrative information, as well as explaining why combat stats and information about the world might be hidden from the players.  This is also usually why DMs will keep most of the palyers out of the loop during a possession or something like that, in order to prevent the party from reacting differently towards the player they know is possessed or corrupted.  On the other hand, when a player has a secret in their backstory, it is often more for dramatic effect that they keep it secret, though depending on how big the secret, it might be to prevent other players from having their characters act on the knowledge as well.

Connected to the idea of making sure player knowledge and character knowledge is kept separate is the concept of difficulty.  Typically an rpg will involve puzzles, combat, social encounters, and more that are designed to be difficult, to require thought, or successful use of in character skills, or clever combat maneuvers.  One of the DMs responsibilities is usually to make the situations challenging, and allow the characters to use their smarts, stats, and creativity to solve the problems presented.  It can actually make it harder to have really cool moments for your character if the player has all the knowledge already.  If your character guesses that the dragon is weak to fire because of its icy surroundings and the lack of interior lighting, that’s cool, but if the player already knew that, the characters revelation becomes less impressive.  By acting with less information, characters and players get more chances to be clever or creative in solving problems.  In combat situations, discovering your foes strengths and weaknesses can be part of the battle itself, and so it can cheapen the battle to have the knowledge ahead of time.

Therefor, the three main reasons one might hide information from one party or another are as follows:  To create a stronger narrative in which the players are entertained by the twists and turns of the story.  To prevent intentional and unintentional mishmashes between in character and out of character knowledge.  And finally, to allow more expression of skill in challenges by making knowledge part of the challenge, allowing lack of knowledge to be overcome in character.  All of these seem like pretty good reasons for hiding information, but sometimes, especially in games outside the traditional sphere, the information dynamic is changed.

Before I go on to reasons why not hiding information can be positive, let me first discuss why the GM is usually entirely in the loop.  First off, in a traditional DM role, the Dungeon Master has so much responsibility and their power within the game is so far reaching that it rarely makes sense for them to not have a given piece of knowledge.  When the DM is playing everything in the cosmos besides the player characters, unless the secret is entirely self contained in a character, the DM needs to know everything in order to accurately play all of their relevant actors.  As long as someone or something knows or is affected by the secret, the DM has reason to know in order that they don’t do something inconsistent.  If the player is secretly the son of the mad queen, if the players run into her, its likely she will act differently around her son, then around random adventurers.  The DM is required to keep their knowledge and the separate knowledges of hundreds of different characters all sorted out in their head to some extent, and they don’t get the luxury of discovering along with their many characters except in response to player character action.

On a narrative level, DMs generally do more of the creating of knowledge and surprises than participating in them, though there is always a certain amount of surprise that comes from reacting to the players and how they deal with each event.  Usually its important to have the DM know the secrets in a narrative sense so that they can tie them into the broader story, or at least give the secret a place to tie in.

Finally, challenge, in the sense that it exists for players, does not really exist for DMs.  They should try and be clever, and creative in how they react to the players actions, but ultimately they control the world, and most of the time they are setting themselves up to lose battles, be outwitted, or be figured out.  The challenge a DM faces have to do with content creation and making sure players are happy, not really anything within the system usually.

Now that we can see why a DM usually has to know all the secrets, it becomes easier to see why players might want to know more.  In less traditional rpgs, the line between DM and player can get less strict or disappear entirely, and at many points in this spectrum the veil of knowledge can need to be moved.  Typically this is when players begin to take on more responsibility in all three of the different areas described above.

The first area again is narrative.  There are a lot of rpgs out there where the players have a certain amount of power to define the world, make statements of fact, or compel the story down certain paths.  In the example I gave above, with the ogre and the ninja squirrel princess, a party that wants more control over the story might want to hear about the plans ahead of time in order to weigh in on the plot, change it, or adjust themselves to fit it better.

Perhaps one player hears the DM tell them about the situation, and then asks the DM if the castle could be guarded by a Minotaur instead of an ogre, because his character’s family was murdered by minotaurs and it would make the battle, and the story more interesting.  Perhaps another character hears about the ninja squirrel princess and is really interested in the character, wanting to add more details and help with the creation, explaining that ninja squirrels do battle in the trees with the fearsome chipmunk samurai.  Perhaps another player hears of this upcoming plot twist and wants to retroactively make his character involved, having been a supporter of the ninja squirrel infiltration movement in his youth.  When everyone is involved in the creative process, sharing information can make it a more rich experience, and potentially a more compelling story, at the cost of some amount of surprise factor and a bit of a disconnect between player and character.

In the realm of separation between player and character knowledge, sometimes players will want to play their characters only getting into certain kinds of situations, or having incredible good or bad luck.  If your cool elvish swashbuckler never looks like a fool, you are going to want to have all the out of character knowledge you can in order to make situations resolve in a way that keeps the integrity of the character you want to play.  Sometimes it can be enjoyable to have an amount of control of decisions and knowledge that you don’t have in everyday life.  If you want your character to always just barely stumble into the correct path for entirely the wrong reasons, you need to know what the correct path is so that you can get your character stumbling there.  If you want your character to have the worst luck in the world, then you need to know what the worst piece of treasure for her to pick up is, or the worst door to open.  By giving the character more knowledge, you can allow them to play their character in certain ways that would be impossible with zero information.

Finally, in terms of difficulty, this is again something that can be regulated by the players in more progressive systems, instead of leaving the level entirely up to the DM. In a lot of systems these days, there are in game reward systems which push players to play up negative traits of their characters in order to make a situation more difficult or up the ante.  When the player can make the encounter harder or easier on themselves with various in game systems, it becomes a lot less critical to make sure knowledge based difficulty stays existent.

When I started writing this article, my aim was to talk about a certain kind of asynchronous knowledge system or rather a couple of more unique ones, but I think I will save the discussion of those for another day.  For today I think I gave a pretty good overview of the basic motivations behind keeping secrets and reasons why one might not do so in rpg systems.  Next time, we can talk about knowledge differences in competative games, in which the players are not necessarily in full cooperation with each other, as well as systems that use knowledge disparity as a game mechanic or as a plot point.  When knowledge becomes part of the game itself…



July 20, 2013

Today I met up with a bunch of people who I had not really interacted with for around five or six months.  These are the same people who I knew in my freshman year when I wrote this blog originally, but while the first while was kinda awkward, it was extremely quick to return to the patterns that I had participated in more than three years ago.  I much enjoyed myself and had a fun time talking and sharing stories with these folks that I had not known for months or years.  I have had many sets of friends over the years, but this group is the one that is the easiest group to have deep philosophical and moral discussions.  My current group of friends is one that is easy to play role playing games and card games and such, but is less willing to share their motives and goals and such.  I’m afraid today’s post is going to be short, but the main thing I want to put forth is that the social structures that you build with one group are likely to last for a long time and it will be easy to return to even if you have forgotten much about that time.  Every separate individual or group of people create a separate version of yourself to deal with that person.  By examining what sort of things are consistent between your different selves, it is possible to determine what you actually care about and what you are willing to change for other people.  While this is not a particularly rare idea or anything, it is something that should be kept in mine.  I am typing on a slightly broken keyboard, so I am going to end it here, but I may return to this topic in the future, to expand upon the ideas presented in this post.

Considering Non Human Intelligence

June 6, 2010

It hasn’t really come up in any of my tlan, but I am in support of Artificial Intelligence.  I have no problem with the idea of another species that is smarter or better than us or at least different than we are.  At this point A.I. is merely a thought experiment and not very actualizable, but there are still many who oppose the idea.  They think that an A.I. would use it’s superior intelligence to enslave or destroy humanity.  The thought of this non human intelligence brings them fear and dread.  Setting aside the fact that most likely an A.I. would be either incapable of such a feat or have no motivation to do so, I really don’t think that is such a bad thing.  I certainly don’t support the eradication of the human race or slavery in general, but if some being smarter than we are comes to the conclusion that we need to go and has enough cunning and resourcefulness to succeed who am I to argue?  Of course the human race wouldn’t take this lying down and might rise up to meet the threat.  If so than the A.I. wasn’t really smart enough to defeat us.  This all sounds super darwinist, the survival of the fittest and all, but in most things I really don’t feel that way.  In this case however, I think that the creation of a new thinking species is more profound and important than our possible demise at it’s hands (or laser guns).  The chance that it won’t destroy us all and may end up forging a partnership with humanity is far more important than any consequence.  Fear of the possibilities that new technology or creations bring is never a reason to abandon learning something new.   What brought on this line of thinking was a debate I found while surfing the net concerning so called vocaloids.  Vocaloids are programs that  simulate human singing.  If you know how you can get one of these programs to sing whatever song you want with perfect pitch and rhythm.  Now,  the debate was over whether the vocaloids were something to be rejoiced or hated.  My position on this is obvious considering my previous statements, but the argument was interesting regardless.  First of all, many felt that no matter how good the computer programs got, they could never sound like a real human.  The current models are good, but you can always tell they aren’t human.  Some felt that the voice was too complicated to be synthesized by computer while others felt that a computer could never put the “soul” into a song that a human performer could.  Others were all to certain that the computers would eventually replace human performers and lead to the end of singing as a viable career.  Meanwhile, others were praising the fact that people without much singing talent and little money could now create there own songs and have them sung to perfection.  All four of these ideas are interesting in and of themselves, but it was the third one that led to my above musings about A.I. and it’s ramifications.  Just as I think that A.I.’s should be given the chance to live, so too do I think that the possibility of computers singing as well as humans should be taken as far as it can.  I understand that the idea of being replaced or surpassed by a machine is a scary one, but it is really no more scary than the idea of being replaced by another human with a great amount of talent.  This fear can be a powerful motivator and if the singing robots begin to top the charts I expect not only a wonderful performance from these iron idols, but an increasingly interesting and powerful performance from the human musicians fighting to keep there positions as the best singers there are.