Pages

Showing posts with label unflagged material. Show all posts
Showing posts with label unflagged material. Show all posts

Thursday, February 18, 2016

The Bedlamite's Greatest Hits: The Pearls Are Swine (No, That's An Insult To Swine)

A lot of people go around, saying things like "humorless PC SJWs can't take a joke" whenever those of us who care about things like racism point out that it isn't funny.

Now, I could write an extensive post detailing exactly why racism isn't funny, going into How Humor Works and the specifics of "punching up" and "punching down" and explaining why one makes you a comedian and the other makes you a bully (at this point the Bedlamite makes a note on a five-foot-long To Do list), but as an empiricist it would be better to provide a counterexample.

And so, I present one of my own jokes from elsewhere, tested in an SJW space and demonstrably SJW-approved!

A bit of context, first.

Michael and Debi Pearl are a pair of Christian conservatives (bordering on reactionaries), associated with a number of fundamentalist and evangelical movements including Quiverfull (known to the American public through the show 19 Kids And Counting). I know them through Libby Anne's blog, where she live-read several of their books: To Train Up A Child, Created to be His Helpmeet, and Created to Need a Helpmeet. In these books, which another commenter compared (unfavorably) to excrement, Michael and Debi describe their preferred way to raise children and Tame Shrews resolve marital disputes: devise rules, the more arbitrary the better; wait for the victim person to break a rule; hit the person with a stick; repeat as necessary.

Those of you who are reading this are probably thinking to yourselves: Bedlamite, that sounds like child and spousal abuse!

Yes. Yes it is. In fact, children have died as a result of the Pearls' teachings.

Now you are probably thinking: But you PC SJWs are supposed to be easily offended! How can you go making jokes about serious topics like that?

Wait for the joke; it's behind a bit more necessary context. Then, if you still don't understand how us "PC" SJWs can make jokes about serious and traumatic subjects, wait for the post about How Humor Works and I'll tell you how to make Holocaust jokes funny.

Back to the necessary context, before I was so rudely interrupted.

The Aristocrats is a common joke that comedians tell one another. The form is simple:
  1. A guy walks into a talent agency, and he says "Have I got an act for you!"
  2. He then demonstrates or describes the act, usually calling in his family to help.
  3. The agent asks what he calls the act, and he responds, usually in a dramatic way, "The Aristocrats!"
  4. In some tellings of the joke, the agent asks a question, such as "How much for season tickets?" or "Can you really get [famous performer]?"
Part 2 is almost always the longest part of the joke. It consists of the most vile thing the comedian can imagine. Murder, necrophilia, bodily waste, bestiality, blasphemy, and mocking of famous tragedies such as the Holocaust or 9/11 are common. As you might expect, this kind of joke is one of the reasons why some comedy clubs don't admit kids.

Since you can probably see where this is going, I now present the joke:

[SCENE: Room interior. A PUBLISHER sits at a desk. MICHAEL and DEBI enter.]
PUBLISHER: So, I hear the two of you want to write Christian advice books?
MICHAEL: Yeah. Underserved market and all that.
DEBI: Got to strike a blow for God in this fallen world.
PUBLISHER: Anything in particular?
MICHAEL: Well, I was thinking I'd start with a child-rearing book.
DEBI: And if that's a success, I'd write a marriage advice book.
PUBLISHER: Okay, that sounds good.
MICHAEL: So many unhappy children. They need to be beaten until they're happy!
PUBLISHER: (jaw drops, stunned silence)
DEBI: And so many couples just don't get along. You know the answer? Wifely obedience!
MICHAEL: Right. She's so much happier since she stopped having any will of her own.
DEBI: And our kids are much happier since we started hitting them with plumbing line.
MICHAEL: Yeah, that's going to be a big thing in my book. Hit your kids for disobedience.
DEBI: Hit them for being unhappy.
MICHAEL: Hit them for speaking when not spoken to.
DEBI: Hit them for not crying when hit.
MICHAEL: Hit them for crying too much when hit.
DEBI: Hit them for breaking rules.
MICHAEL: Oh, but the rules don't have to make sense. Or be ones that the kids have had a chance to learn. In fact, it's better if they're complete nonsense you made up five seconds ago.
DEBI: Yeah. Kids need to respect rules, and they can't learn respect for the rules if the rules aren't completely arbitrary.
MICHAEL: And of course, no one will ever take this too far.
DEBI: Not that we'll define what "too far" is. It's enough to not use the rod in anger.
MICHAEL: Of course, all of this is because all children are born full of sin, and rebel against rightful authority.
DEBI: Which is why their wills need to broken.
MICHAEL: Like I did with yours, honey?
DEBI: Yes, and that's what my book's about.
MICHAEL: She's been so much happier after I beat the shit out of her. Wasn't over anything important either. Just whose turn it was to take out the garbage.
DEBI: My book's about how God wants women to be quiet and submit themselves completely to their husbands.
MICHAEL: Even if it's about sex, and she doesn't want it. Especially then!
DEBI: Right. It's the wife's duty to do absolutely anything the husband wants.
MICHAEL: Aside from treating him like a woman.
DEBI: Right. No gay stuff. Anyway, the wife needs to keep all of her problems bottled up. Otherwise she'll drive him away.
MICHAEL: I was thinking I might write a companion book, where the husband's told that if his wife doesn't say anything, he should assume that everything's fine. Muahaha.
DEBI: Even if the husband's doing illegal things, she should just smile and help him bury the bodies. Unless he's pimping out their minor son.
MICHAEL: Right. No gay stuff.
DEBI: Even if he beats her, and breaks her bones, it's probably because she did something to deserve it. Like asking him to do something, or not being a perfect servant all the time.
MICHAEL: Or frowning. Or not being beautiful enough.
DEBI: Right, and if she really needs something from him, like enough money to buy food fit for human consumption, what she needs to do is submit harder and let God take care of it.
MICHAEL: Or else he'll leave her for a hot young girl, and leave her alone in a duplex.
DEBI: Where she gets tempted into the worst sin possible: gay stuff!
MICHAEL: Oh, and you forgot, it needs to be more focused on the man.
DEBI: Right, right. All women are meant to mold themselves into the shape that fits their man, but there's three types of men. There's the boring kind. There's the flighty kind. And there's the kind who loves you and shows you that he does.
MICHAEL: By beating the shit out of you.
DEBI: And if you're lucky enough to have that kind --
PUBLISHER: Who the hell are you two?!
MICHAEL & DEBI: The Aristocrats!

Tuesday, November 3, 2015

A Few Thoughts on Free Speech

So.

Apparently someone has made the news for suffering consequences for speech, or I've just gotten fed up with trolls claiming the same. So, to begin, what is freedom of speech?

For purposes of this post, let's call it the ability to say whatever you want without punishment.

But then, what is punishment?

Is being thrown in prison punishment?
Is being fired from your job punishment?
Is having your ability to speak taken away punishment?
Is losing your audience punishment?
Is being criticized punishment?
Is being thought of as "that dude who supports slavery" punishment?

Let's start with the first of these: is being thrown in prison punishment?

Well, intuitively, the answer would seem to be "yes". According to many people who have put a lot more thought into this than I have, the answer would also seem to be "yes". The exceptions made for things like slander or fraud or sedition are held to be limitations on the right rather than examples of where the right contradicts itself. If you get thrown in prison for what you say, you do not have free speech. That was easy!

Next, let's skip to the end. Is being thought of as "that dude who supports slavery" punishment?

Intuitively, the answer would seem to be "no". When you say things, you expect that people are going to form opinions based on it; one possible group of opinions they might form is opinions about you. Not allowing people to form opinions doesn't just protect you from being punished; it also keeps them from forming opinions. Another easy one! If this keeps up, the whole post will be over pretty quickly!

Is being criticized punishment?

Intuitively, the answer seems to be "no". Criticism tends to take the form of speech, so if free speech is a universal right, you can't restrict the right to criticize. Another quick one --

--hold up. Suppose the criticism isn't meant to counter speech, but instead to block it. Suppose that what someone actually said is being buried beneath out-of-context quotes or deliberate misinterpretations. Suppose that the "criticism" is actually a DDOS attack or a hack that knocks the original speech off the Internet. Suppose that the "criticism" is actually something like a threat to do unspeakable things to the speaker if they keep speaking. That seems like a pretty clear case of "criticism" that is not compatible with free speech.

Is losing your audience punishment?

Well, it's tempting not to rely on intuition after that last one, but the intuitive answer seems to be "yes". If a transmission is blocked, that's censorship even if no one goes after the actual broadcaster, right? If you can't be heard, you may as well have not spoken, right?

But what if your audience walks away on their own? Under most circumstances, no one has an obligation to listen to you. This is especially true if your audience would otherwise pay to listen to you, even indirectly; just because you have a right to free speech doesn't mean you have a right to paid speech.

Is having your ability to speak taken away punishment?

Intuition's batting 500 so far (or something, sports metaphors aren't my thing), so it's looking a bit sketchy. But let's give it a chance to turn this around. The answer seems to be "yes". If you lose your ability to speak, that's practically the definition of censorship, isn't it?

Well, suppose you're speaking using a platform someone else owns. Other people aren't obligated to let you use their microphones to speak to their audiences, no matter how much you beg them. Said audiences certainly aren't obligated to listen. Other people have a right to filter out noise and misinformation from their channels, and ultimately it's the owner of the channel who decides what counts as "noise" or "misinformation".

Is being fired from your job punishment?

So far, intuition's lost more than it's won. But this is pretty obvious. Being fired, that's the sort of thing that happens for incompetence, insubordination, mutiny, and so forth (or so I've heard). It's reprehensible that someone should be fired simply for voicing a particular belief! Even members of the Klan have a right to work!

So what happens when the speaker's job is to speak using the employer's platform? What happens when the speaker's job is to represent the employer? What happens when the speaker's job is to lend the employer their good name? In other words, what happens when an obligation to retain this person would interfere with the employer's free speech?
(These might seem like a distant hypothetical, but this is the era of the professional celebrity. Athletes and actors acquire assets by associating artifacts with their appellations. When you get paid to have a reputation and show up in an ad, saying something that damages your reputation, or even just having a relative who damages it, interferes with your ability to do your job.)

Wednesday, September 30, 2015

Blasphemy!

The Kim family are humans, and bad ones at that. A flag is just a symbol of an arbitrary division within humanity, and rallying behind a flag a way to keep the sheeple masses from rising against their masters. The invisible hand of the market is fully capable of punching people in the face, but $ECONOMIC_SYSTEM doesn't work any better. $POLITICIAN is the same as any other jerk out to fleece you, xe just repeats the words that you like; ditto $PUNDIT. $SELF_HELP_GURU doesn't have any more answers than you do, and is flogging something xe made up in xir basement. $ALTERNATIVE_MEDICAL_TREATMENT has no hard evidence supporting it and its proposed mechanism of action is, scientifically speaking, pure nonsense; this goes double for things like "Law of Attraction".

Oh, and no religion invented by mankind has contained a deity or a deity's adversary who was even a decent being, let alone a moral example worth following or obeying. And despite what your "Word of Faith" preacher or that one exiled Nigerian royal might tell you, no god will reward you for giving someone money.

One day, we will all be able to speak loudly the truth that "the fool hath said [only] in his heart". One day, the offense caused by a statement will be proportional to its harm. Until then, happy Blasphemy Rights Day.

Sunday, June 14, 2015

An Open Letter To People Who Think "Man Coulter" is a Funny Joke

Dear [insert form of address],

It has come to my attention that, when discussing a certain conservative pundit, you think it is a valid criticism, or funny, or in any way appropriate, to make "jokes" to the effect of "she has an Adam's apple" or "she's a man" or the like. I would like to disabuse you of this notion.

To begin, I believe you identify as liberal, correct? You believe in equality, and standing with he oppressed against their oppressors, and the rights of the downtrodden, correct? You believe that membership in a class, even or especially an unprivileged class, is not cause for shame?

Furthermore, you believe, as I do, that Ms. Coulter is a throughly vile human being, correct? You agree that she is a hateful, racist, sexist, homophobic, transphobic, poverty-bashing, genocide-advocating, torture-apologist, victim-blaming, idiotic, willfully ignorant, talentless, unfunny, Christian-supremacist, jingoistic, warmongering, self-loathing, self-absorbed, arrogant, narrow-minded, dichotomously thinking, hypocritical, violent mouthpiece for some of the most disgusting ideologies in mainstream political discourse?

Why then is it, that the best insult for her you can manage amounts to "ha ha ugly t****y"? There is much to criticize: her idea that Christianity should be brought to the Middle East with a sword, her defenses of people who are actively trying to bring about the End of Days, her inability to distinguish between nuance and treason, and all of the things listed in the previous paragraph; so why are you going with something fundamentally irrelevant to her opinions?

For that matter, why are you using "ha ha ugly t****y" as an insult? Why are you choosing to criticize a woman pundit with "ugly", implying that her looks are at all relevant to the validity of her opinions? Why are you criticizing anyone with "t****y", implying that being trans* is fundamentally a bad thing; much less criticizing a pundit with it, and implying that trans* people's opinions are fundamentally invalid?

In conclusion, you should engage with ideas you don't like, instead of dismissing them by claiming that the person who has them is a member of an unprivileged class.

Signed,
A Liberal Who's Tired Of You Undermining The Cause

(Note: This letter is also addressed to people who think "I wouldn't sleep with [name]" is a valid criticism of a conservative politician.)

Tuesday, September 10, 2013

Banking and the Credit Crunch, Two Cows Version

Okay, since my piece on pickup artistry from an Atheist+ standpoint isn't going anywhere, I figure I'll get this off my chest instead.

Two Cows

The idea of the "Two Cows" metaphor comes from economics. It consists of simplifying a complex system into a simple one, starting with the phrase "You have two cows", in which cows stand for something that produces, milk stands for what is produced, and a number of other metaphors are thrown in as needed. For example:
Capitalism (in theory): You have two cows. Your neighbor has two bulls. You trade a cow for a bull.
Capitalism (in practice): You have two cows. You sell one cow. You try to extract three cows' worth of milk from your remaining cow. You briefly wonder why you have one dead cow, and sell the farm that was able to get three cows worth of milk from one cow. Screw your neighbor; if he deserved any milk, he'd have something to trade for it.
Communism (in theory): You have two cows. Your neighbor has two bulls. Your neighbor lets anyone who wants borrow xir bulls. You give all of the milk aside from what you need to anyone who needs it.
Communism (in practice): You have two cows.  You give all of the milk to the government, and get back slightly less than you need. A bull occasionally visits your farm, but you never know when.

This idea has spread to other areas, but aside from giving a few examples of this it isn't relevant to the post:
Objectivism: You have two cows, and a farm that your ancestors stole, but it's okay because the other owners weren't using it as well as you are. Your neighbor mentions that he'd like some milk. You poison one of your cows to make a point, subject your neighbor to a five-hour rant, and take your remaining cow into the mountains.
Judaism: You have two cows. You give some of your milk to your neighbors in exchange for some of their crops. Your neighbors set their crops on fire, blame you, and take one of your cows as reparation. You move someplace else. Your old neighbors tell your new neighbors that you stole one of their cows.

Banking

You have two cows.  You sell milk futures on them to buy a third cow, and hope the third cow shows up before you get thirsty.

The Credit Crunch

You have two cows. The government tells you that you can't take the race of the seller into consideration when buying cows, but refuses to interfere with cow or milk markets otherwise. You sell milk futures on your cows and buy two sick cows. You show people your healthy cows, sell them milk futures on your sick cows, and repeat until you own lots of cows. Word gets out that your cows are sick, and that some of them have died. The cheesemakers can't hire anyone unless they can be certain of getting milk, so lots of people are unemployed. The government looks at the situation. Because you have friends in high places, rather than throwing you in the slammer and seizing your cows, the government raises the tax on carts, buys your dead and sick cows at the price of healthy cows, gives you healthy cows, and tells you "now don't do it again". People look at the situation, and conclude a) that you deserve to own lots of cows, and b) that there not being enough cheese yet is the government's fault for forcing you to buy sick cows.

Friday, January 25, 2013

Designing Sharazad

Some of you may have played my Sharazad storygame (and if you haven't, please do give it a look!) and been wondering what it's final version is going to look like (or at least, where I got the idea).

I wanted to show how cultures evolve. I wanted to demonstrate how a culture accumulates baggage, and releases it when it is no longer necessary.

So, I thought, "What is the most basic unit of culture?". And then it hit me. Stories.

Stories tell you a lot about the culture that created them, as long as you understand the basic context. As an example, look at the story of Sodom and Gomorrah. The LORD sends two angels to visit Lot (a pattern you will see in many cultures with a hospitality tradition. There are myths about Zeus, Odin, and a number of other deities doing this. The odd thing here is that the LORD is working through agents). Lot invites them in, as a Good Host is supposed to do. Then the Sodomites demand that Lot allow them to take sexual advantage of his guests (the epitome of Being A Bad Host is to attack guests in one's home/city), to which he responds by offering them his daughters (who are, by the rules of that day, his most valuable property), showing that he is willing to place the well-being of his guests above that of his family, which a Good Host is supposed to do. The LORD visits him, and gives him warning that He will destroy the city (Lot's reward for being a Good Host is to avoid the punishment of the Bad Hosts). Lot thus flees the city as it burns behind him.

From this we learn a few thing about the ancient Hebrews:
  1. The Hebrews had a strong hospitality tradition. Anyone with a home was supposed to welcome travelers, and there were clearly-defined rules for how both host and guest were to interact, including that the host was to protect the guest from attackers.
  2. The Hebrews had an almost Manichean view of Good and Evil. The Good Host is almost completely Good, offering his daughters to the mob without hesitation. The Bad Hosts are completely Bad for very little reason, attacking guests in their city for almost no reason at all. In the end, Good is rewarded and Evil is punished. (Granted, most of the stories in the Bible operate on almost fairytale-like logic, with conflicts and motivations simplified to an absurd degree, but the point still stands.)
  3. The Hebrews had a very different view of women than we do today. Modern society frowns on the idea that Lot's adult daughters were his to offer, especially in that way. By the standards of the Hebrews, any woman in Lot's household was his property unless she was brought by a guest, and he could do anything he liked with her.
With that example out of the way, how can we go about turning "stories-are-culture" into a game?

We put the player in the role of a storyteller. "Tell Story" is the most basic verb of the game, with a broad variety of possible variations: Tell Cautionary Tale, Tell History Of The Tribe, Tell Subversive Story, Tell Account Of The Tribe's Enemies, Tell Fable Of Morality, Tell Speculation Of The Future, and so on. Those variations are complex enough that they call for their own minigame, which is what currently exists of Sharazad.

So, next (once all aspects of the minigame are complete), Sharazad will begin touching on culture. Some storylets in the minigame grant qualities, such as Prepared, Ritualistic, or Compassionate. At the end of the story, you can turn these in for cultural traits like Survivalism, Shibboleths, or Cohesion. To keep you from getting obscene amounts of all traits, there's two restrictions in place.

First, each trait costs Head Space. There's only so much indoctrination you can do, and only so many things you can remember. Advances in nutrition or education might increase this, but you have to work for them.

Second, there's sets of opposing traits. You can't be both Authoritarian and Egalitarian, nor can you be both Insular and Open, nor Survivalist and Curious. You can't gain a trait while possessing an opposing trait.

And that requires that if you want to change your culture, you have to dump some of your traits. You can make your story Subversive using certain actions in the tale, challenging cultural assumptions, and losing some of your audience. In one telling of the story, the angels were some of Lot's friends, and he fought the mob to protect them. In another, he threw them onto the street when they asked for lodging, or demanded payment. Since these challenge the standing rules of the society, they are Subversive actions. When you reach the end of the story, you can choose to oppose a standing cultural trait if you are Subversive enough; this removes one level of the trait and returns the Head Space it cost.

And then the next step in the development of Sharazad. The traits interact with the culture's environment. A Fast-Breeding culture develops Population quickly enough to replace what it loses to predation or warfare. A Survivalist culture is prepared to deal with creatures in the woods. An Open culture is able to learn new technologies and ways of thinking from its neighbors. A culture with Shibboleths is better able to resist being influenced by outsiders.

The player gains Turns, which are used to make cultural adjustments or develop Population, Technological Advantage, and the like; and then spend them on specific developments. Then, once the player has no Turns left, it's the world's turn. The player draws Opportunity cards, which allow xim to burn through the World's Turns. These cards represent threats to the culture (such as outsiders, wild animals, diseases, and so on) and challenge certain cultural traits, although some of them can simply be "bought off" with developments.

Wednesday, December 26, 2012

Sharazad beta: Conflicts and horror.

So, I'm not sure how many of you are interested in my Sharazad storygame.

Anyway, since I know someone out there probably is, I am now officially announcing the following:

Multiple conflicts are now in open beta. There are five basic conflicts used in the game: vs Villain, vs Nature, vs Society, vs Fate, and vs Self.

Horror is now in closed beta. Those of you who have played Sharazad's story engine on the Heroic mode will see something very different. Instead of slowly building tension to a climax, you start at a climax and reduce tension within a fixed time limit.

Next releases: Epic stories and Mysteries!

Also, some pay content will be added soon. Not much, just a way to stay in a story if you fail it.

Thursday, November 29, 2012

Sharazad Launched!

So, some of you might have been wondering if I'm ever going to actually make a game. Well, I have made a few, but the question is actually "Can we see them?" (grumble, grumble, blah blah comments blah blah I don't bite blah I know you're out there blah blah blah go right ahead etcetera etcetera). Well, I now have a very lightweight Storynexus game: Sharazad!

In Sharazad, you play, more or less, as a culture. You tell stories, and those stories affect how people in the culture behave. People's behavior influences how well the culture survives: how well it avoids being exterminated by the people over the next hill, being eaten by bears, being absorbed into another culture, being torn apart by revolution, stagnating and collapsing...

Well, that's the finished version. Right now, I have the "you tell stories" part.

Sharazad can be found here.

The feedback thread can be found here.

Friday, November 9, 2012

A Fairy Tale of Human Rationality

Would you like me to tell you a story?

Once upon a time, not too long ago, there were two magical kingdoms, Acirema and Rssu. The kings of these kingdoms argued constantly over whose way of distributing bread was better: Rssu's king, King Nilats, insisted on a philosophy that people were generally nice and kind and that if all of their needs were met they would see to it that everyone was a well-off as possible, a philosophy that had become popular during a war in which a number of more-horrible-than-usual things had happened; while Acirema's king, King Nager, insisted that things would go better for everyone if everyone thought only of themselves and took advantage of everyone else when they could.

Now, the traditional way of solving questions like this was that the kingdoms would go to war. They would fight, and commit atrocity upon atrocity. Whoever committed the most atrocities would usually win the war, as their opponent would be unwilling to match them and would lack the advantages gained thereby, and the one who committed the most would therefore be the most just and the most merciful and generally the most right. This time, though, they decided to do things a bit differently.

Before the war in which a number of more-horrible-than-usual things had happened, everyone involved had hoped to prevent war by building up large armies so that war would devastate everyone involved, and therefore no one would start a war. And it had worked, until a dignitary from Yragnuh-Ortsua had become lost while visiting a vassal state and been assassinated by a rebel. The two kingdoms decided to try this again. And so, King Nager spoke with his royal wizard.

"Wizard," he said, for wizards forsook their names, "can you create a spell that will completely destroy a province of Rssu?"

"Yes, my king. But to prepare such a spell would take millions of gold pieces worth of gemstones."

"I can get you these. Once the spell is prepared, how long can the spell remain prepared? You have told me that with spells such as these, once prepared, one must decide whether to cast them or let them fade away."

"With this spell, you would have forever to make such a decision. In fact, letting it fade away would be difficult."

"Very well. You shall have all the materials you need. But do not cast the spell until I order you to."

King Nilats heard of this, and summoned his own wizard. "Wizard," he said, "have you heard of the latest developments in Acirema?"

"If you mean the province-destroying spell, yes, my king."

"This is unacceptable! I order you, wizard, to create a spell that can destroy two provinces in a single casting!"

Nilats's wizard bowed deeply, and told King Nilats what he would require for such a casting. He was granted whatever he named.

Nager heard of this, and his wizard created and prepared spells that could destroy three provinces. Nilats heard of that, and his wizard created and prepared spells that could destroy four. And so it went, until many trillions of gems, each worth thousands of gold pieces, later each wizard could destroy the world several times over at will.

During this time, the kings had not been idle. Each sought to teach other kingdoms, such as Nari and Abuc and Aerok, their way of distributing bread. It was not enough for a kingdom to accept a way in its own time; they had to be taught as quickly as possible, lest they accept the other kingdom's way. Each king used methods that stopped just short of open war (and in some cases were actually open war) to persuade each kingdom, and to prevent the other king from persuading that kingdom.

And each had ordered their wizard to, at the first sign of war with the other kingdom, cast all of their spells; and then ordered their wizard to set up spells such that at the first sign of war the spells would be cast without need for that wizard's involvement.

It seemed it was only a matter of time before the Acirema and Rssu would be drawn into war with one another.

But at this time, the hunger of the spells for gems had led to each king sending as many people to the mines as possible, sometimes by royal command and sometimes by paying exorbitant amounts for gems. And so, with few people harvesting grain and milling flour and baking bread, bread was scarce in both kingdoms. Rssu ran out of bread, and thus the question was resolved to Nager's satisfaction.

Thus it was that the world was almost destroyed over a question of bread distribution. The moral of this story is that people are fundamentally rational and sensible.


Thursday, August 30, 2012

I 'm Not Dead Yet

...I can dance and I can sing! I am not dead yet; I can do the Highland Fling (well, not really)! No need to go to bed! No need to call the doctor 'cause I'm not yet dead!

...Sorry. Now then, on to blog business.
You may not know what I did this summer, but soon you will.

Monday, May 14, 2012

GMing: Mystery and Fantasy

"360. I must remind the GM that my Blessed can Raise Dead before he runs another murder mystery again."
- The (as of this posting) 2050 Things Mr. Welch is No Longer Allowed to do in an RPG

 I recently got into an argument over whether it is possible to have a murder mystery in a fantasy RPG (or a transhumanist RPG, for that matter). The difficulty presented in a murder mystery is that the prime witness to the crime is, well, dead, so if being dead doesn't mean anything, where's the mystery?

You can still have murder mystery in a fantasy setting, though, as long as your culprit acts smart. What would be a perfect murder in an Agatha Christie novel is just stupid if the detective can brainscan the victim or cast Speak With Dead, so a clever murderer is going to take precautions against these.

For purposes of this post, we're going to be working off of D&D, since it's sort of a standard. Change out the spells listed and so forth for the equivalents in your own game. For instance, if you're playing Eclipse Phase, you can trade out everything in the spell limitations section for "pop their stack and run bedlams on it until they don't remember their own name, and establish an alibi". Also, these are going to be written as advice to a murderer in a fantasy setting; as a GM, hopefully you will be thinking about what your own culprit is doing.

  1. Spell Limitations. A lot of the spells that detectives use in fantasy just don't work under some conditions. Speak with dead and raise dead need a reasonably intact corpse, so at low levels, chopping up the body and hiding the pieces will do the trick. Resurrection calls for a part of the corpse, so at the level that becomes available, you need to do something harder, like burning the body or sinking it in the swamp. True resurrection doesn't even call for a corpse, so you need to either use trap the soul, find another way of keeping them from coming back, or trick the investigators into using the wrong spell.
    Getting the investigators to use the wrong spell is deceptively easy. Just make them think that the body is fresher than it is (since these spells have a time limit) or in better shape than it is. Making a body look in better shape than it is is easy; after all, morticians do it all the time. Corpses are objects, so yanking out a vital organ and using a simple mending cantrip will do wonders (especially if you replace the organ with cloth or a slab of meat), or you can use the Craft (taxidermy) skill. If you're up against someone with resurrection, things get a bit trickier. For that, you need a statue of your victim and a stone to flesh spell.
    Making the corpse look fresher than it is is easy too. Mending or taxidermy can reverse damage caused by rotting, and a flesh to stone/stone to flesh pair can keep it ready to pull out when you need a corpse. You don't even need magic either; just carve some ice out of the local pond in the winter and leave a fresh corpse in a room with it for a couple months. It won't look rotted, and unless the detective finds the ice room, they probably won't think it's been kept from rotting.
    Of course, if you're making the murder look recent, you need to come up with an excuse for why it could be that fresh. This sort of thing's easy if you're a doppelganger or a master of disguise; just replace them and stage the murder mystery when you need to make your exit. It's a bit trickier, though, if that option's not open to you because you need to be elsewhere or can't disguise yourself worth ****. We'll assume for the moment that you haven't got a friend who can pull off the replacement. The easiest way to avoid raising suspicion is to have a confederate in the victim's household, either loyal to you, bought off/blackmailed, or dominated/modify memory-ed silly. The confederate can arrange excuses for why the victim isn't taking visitors: highly contagious and magic resistant disease, engaged in secretive and delicate magical experimentation for the rest of the week, out walking someplace, the excuses are limited only by your imagination. This works even better if you can cast modify memory on actual visitors every now and then; nothing like false memories to make people think the victim's still alive. And in either case, the alibi spell from Exemplars of Evil is useful for making people think you were someplace else when you were actually busy pulling this stunt.
    Other spells have their own limitations. Detect evil can be foiled by undetectable alignment, or by not actually being evil (maybe you're just that nuts, or maybe the sonova***** actually had it coming, or maybe you're good enough that this won't push you to evil), or by everyone else nearby registering as evil. Glibness can fool zone of truth, as can carefully worded evasions. Clairvoyance can be beaten with  false vision, or precise knowledge of when you can act. Even when your chambers (or those of your next target) are turned into a closed room with alarm, prying eyes, or blade barrier, you can still have your plots carried out using whispering wind, telepathic bond, hypnotism, or carefully arranged instructions; or you can break in or out of the sealed room with word of recall, passwall, greater teleport, a carefully timed still mislead or greater image, fog form, ethereal jaunt, or transport via plants, to say nothing of breaking Knox's third rule along with his second.
  2. Victim Limitations. Let's say that you have decided to ignore the above section, or that against all reason Our Heroes have figured out your trick. All is not lost! The trick here is to keep your victim from knowing whodunnit. There's some simple, nonmagical ways to do this, ranging from slashing your victim's throat in their sleep to using your death attack assassin class feature from behind to using poison or disease to rigging a complicated trap in their privy, but there's magical ways to do this too. You can kill them while disguised (either the mundane way or with transmutation or illusion spells), you can use the Deceptive Spell metamagic feat from Cityscape to keep anyone from realizing you cast whatever killed the victim, you can manifest death urge on them from where they can't see (or you can mask the display somehow), and if all else fails, there's always contingent modify memory set to hit them if someone brings them back to life. Or you could just, you know, hire an assassin so that the victim never has to see you.
  3. Victim Agenda. So the heroes have raised the victim, and you couldn't resist one last gloat. Either that, or there's now a ghost floating around. Or the victim was one step ahead the entire time, and named the killer in his will. Well, you may look ****ed, but this could turn out well. See, the victim could have their own plans. The victim might take advantage of this opportunity to advance a plot of their own, and implicate someone as their killer. And the suckers will probably buy it too. And nothing looks quite as bad as being named a murderer, or a kinslayer, or a regicide, by the victim himself. The only way you can count on this happening, though, is if you are the victim. That's right, I just said that the culprit and the victim might be the same person. A victim might make a suicide look like a murder in any number of ways, ranging from locking himself in a room with one other person and a crossbow, to having a guard slap him on the back and later jumping from a balcony with the intended "culprit" next to him, or any number of other tricks.

Friday, March 9, 2012

C++: Dependent T and Regression.

A little something I wrote for my stats class.

//Runs Dependent T on a set of data.
This part is called a comment. It explains what a piece of code does to anyone reading the code. It does nothing else; the compiler/interpreter ignores it.

#include <iostream>
#include <sstream>
#include <math.h>
These are packages used by the program: pieces of code written by someone else. All three packages are included with the compiler/IDE (Integrated Development Envirionemt, a program that helps to write code by making sure that the programmer is writing correctly) that I was using (Visual C++ Express, in case you were wondering).

IOStream handles the console, which looks a lot like the MS-DOS prompt (lay off. I'm old, so I'm allowed to go spouting jargon that you young whippersnappers have never seen).

SStream handles strings, which are how programmers say text.

Math.h handles calculations more complicated than basic arithmetic.
using namespace std;
This is called a namespace. It controls what code this program has access to, and what code has access to this program. Most C++ code uses the "std", or standard, namespace.

int main ()
{
This is called a function. It is a piece of code that can be run. The part inside the parentheses is where arguments (information that some methods need in order to run) would go, but this method does not require any information that it does not collect itself.

Incidentally, the main() method is the "starting point", or the part of the code that runs first.
    bool collecting=true;
    double sum1, sum2, count, sumdiff, sumdiffsquare, sumproducts, sum1square, sum2square;
    double correllation;
These are called variable declarations. They tell the compiler to set aside part of the computer's memory to store information, and describe the type of information that it will need to store.

Bool is short for boolean. It describes a piece of information that is either true or false.

Double is a type of information that stores numbers and fractions.

As you can see, it is possible to create more than one variable at a time.

Also, these statements all end in semicolons. This tells the computer that the statement is over and that it should prepare to read the next one.
    sum1=0;
    sum2=0;
    count=0;
    sumdiff=0;
    sumdiffsquare=0;
    sumproducts=0;
    sum1square=0;
    sum2square=0;
    string string1, string2 ="";
These are called variable assignments. They tell the computer to change the information stored in its memory to the values provided.

All of the assignments change the information in memory to what is called literals, or values clearly defined in the code. This is somewhat bad practice; if I needed to change the code, there's a chance I'd forget why I chose some numbers instead of others. To get around this, most of the time a programmer will use something like this:

const int initialValue=0;
int myvar=initialValue;

    string input;
    while(collecting)
    {
Here, we will use what is called a while loop. A loop is a piece of code that is run repeatedly, without any major changes. A loop might be used to keep a game running, or to add one to every item in a list; in this case, we're using it to gather information from the user.
        try
        {
This is what is called a try-catch block. What it does is it runs this piece of code:
            double in1;
            cout << "Enter the first datum for this point. Press Enter to calculate.\n"; 
(this, by the way, is how C++ writes something to the console; the "\n" at the end is called an escape character, and it applies some special effect to the text, in the case of \n it ends the line and starts another)
            getline(cin,input);
(this takes console input that ends with an Enter, and puts it into the variable "input")
            stringstream(input) >> in1;
(this takes the variable of type string [used to store text] called "input" and puts  it into the variable of type double called "in1")
            if(input=="")
            {
(this is called an if block. It runs a piece of code if and only if a particular condition is met, in this case if "input" is what is called a blank string)
                collecting=false;
                break;
(a break statement will cause the computer to instantly end one loop it is running)
            }
(and this ending curve bracket tells the computer that it has reached the end of a loop, block, or method)
            double in2;
            cout << "Enter the second datum for this point. Press Enter to calculate.\n";
            getline(cin,input);
            stringstream(input) >> in2;
            if(input=="")
            {
                collecting=false;
                break;
            }
(this is where a bit of calculation takes place)
            sum1+= in1;
(this increases the value stored in sum1 by in1)
            sum2+=in2;
            count++;
(this increases the value stored in count by 1)
            sumdiff+=in1-in2;
            sumdiffsquare += (in1-in2) * (in1-in2);
            sumproducts += in1*in2;
            sum1square+=(in1*in1);
            sum2square += in2*in2;
        }
And then, if the computer makes a mistake (called an exception)  at any point in that, for instance if it cannot convert whatever the user typed into a double, it instead runs this catch block and instantly ends the try block:
        catch (exception e)
        {
            collecting=false;
        }
    }
And here we end the for loop.
    cout << "Dependent T:" << endl;
Here is the part where the computer handles output. endl, by the way, is another way of ending a line.
    cout << "Mean X:" << sum1/count << endl;
As you can see, it is possible for the computer to include things other than strings in text. This is because the computer runs an implicit cast on the variable, a piece of code included in the compiler that changes one type of variable into another.
    cout << "Mean Y:" << sum2/count << endl;
    cout << "Sum of differences:" << sumdiff << endl;
    cout << "Sum of square differences:" << sumdiffsquare << endl;
    cout << "Count:" << count << endl;
    cout << "--------------------------------------------" << endl;
    getline(cin,input);
And here, we have the part of the code that tells it to wait until the user has pressed Enter.
    cout << "Difference of means:" << (sum1-sum2)/count << endl;
    cout << "Average square difference" << sumdiffsquare/count << endl;
    cout << "--------------------------------------------" << endl;
    getline(cin,input);
    cout << "Count * count-1:" << count*(count-1) << endl;
    cout << "Square sum of differences - average square difference:" << sumdiff*sumdiff-(sumdiffsquare/count) << endl;
    cout << "--------------------------------------------" << endl;
    getline(cin,input);
    cout << "Square root of square sum of differences - average square difference:" << sqrt(sumdiff*sumdiff-(sumdiffsquare/count)) << endl;
And here we see an actual function in use! sqrt(number) returns (that is, when included in code, its value is equal to) the (positive) square root of its argument. In this case, we can include an expression (essentially, a calculation) as its argument, because that expression returns a number. 
    cout << "--------------------------------------------" << endl;
    getline(cin,input);
    cout << "T value:" << ((sum1-sum2)/count)/sqrt(sumdiff*sumdiff-(sumdiffsquare/count)) << endl;
    cout << "Degrees of freedom:" << count-1 << endl;
    cout << "--------------------------------------------" << endl;
    cout << "--------------------------------------------" << endl;
    getline(cin,input);
 Dependent T, by the way, is a way of figuring out whether a difference in two numbers associated with the same experimental uint and measured on the same scale (for instance, the number of cigarettes a person smokes per hour while wearing a sticker and while wearing a nicotine-laced sticker). The way it works is that the T-value (an adjustment of the difference between averages of two groups) is calculated, along with a number called the degrees of freedom. These are then looked up on a table, and if the t-value exceeds the range listed for a given probability at the degrees of freedom, the odds that the difference in averages was purely because of chance are less than the probability for which it was looked up.
    cout << "Regression:" << endl;
    cout << "Count:" << count << endl;
    cout << "Sum of products:" << sumproducts << endl;
    cout << "Sum X:" << sum1 << endl;
    cout << "Sum Y:" << sum2 << endl;
    cout << "Sum X square" << sum1square << endl;
    cout << "Sum Y square" << sum2square << endl;
    cout << "--------------------------------------------" << endl;
    getline(cin,input);
    cout << "Count * sum of products:" << count * sumproducts << endl;
    cout << "Product of sums:" << sum1*sum2 << endl;
    cout << "Count * sum of square X:" << count * sum1square << endl;
    cout << "Square sum of X:" << sum1*sum1 << endl;
    cout << "Count * sum of square Y:" << count * sum2square << endl;
    cout << "Square sum of Y:" << sum2*sum2 << endl;
    cout << "--------------------------------------------" << endl;
    getline(cin,input);
    cout << "Count * sum of products - product of sums:" << count * sumproducts - sum1 * sum2 << endl;
    cout << "Count * sum of square X - square sum of X:" << count * sum1square - sum1*sum1 << endl;
    cout << "Count * sum of square Y - square sum of Y:" << count * sum2square - sum2*sum2 << endl;
    cout << "--------------------------------------------" << endl;
    getline(cin,input);
    cout << "X-part * Y-part:" <<(count * sum1square - sum1*sum1)*(count * sum2square - sum2*sum2) << endl;
    cout << "--------------------------------------------" << endl;
    getline(cin,input);
    cout << "Square root X-part * Y-part:" << sqrt((count * sum1square - sum1*sum1)*(count * sum2square - sum2*sum2)) << endl;
    cout << "--------------------------------------------" << endl;
    getline(cin,input);
    correllation= (count * sumproducts - sum1 * sum2)/sqrt((count * sum1square - sum1*sum1)*(count * sum2square - sum2*sum2));
    cout << "Correllation coefficient:" << correllation << endl;
    cout << "--------------------------------------------" << endl;
    getline(cin,input);
    cout << "Begin T value derivation:" << endl;
    cout << "Count:" << count << endl;
    cout << "--------------------------------------------" << endl;
    getline(cin,input);
    cout << "Square of correllation coefficient:" << correllation*correllation << endl;
    cout << "Count - 2:" << count-2 << endl;
    cout << "--------------------------------------------" << endl;
    getline(cin,input);
    cout << "1-square of correllation coefficient:" << 1-correllation*correllation << endl;
    cout << "--------------------------------------------" << endl;
    getline(cin,input);
    cout << "Deviance:" << (1-correllation*correllation)/(count-2) << endl;
    cout << "--------------------------------------------" << endl;
    getline(cin,input);
    cout << "Standard deviation:" << sqrt((1-correllation*correllation)/(count-2)) << endl;
    cout << "--------------------------------------------" << endl;
    getline(cin,input);
    cout << "T value:" << correllation/sqrt((1-correllation*correllation)/(count-2)) << endl;
    cout << "Degrees of freedom:" << count-2 << endl;
    cout << "--------------------------------------------" << endl;
    cout << "--------------------------------------------" << endl;
    getline(cin,input);
Nothing new here. Regression is a way of determining whether there is a correlation between two things, that is, whether they tend to appear together, or whether they tend to appear apart, or whether they appear independently. It also produces a T-value, which is used the same way as the one above.

    //reach this line last
    return 0;
And here is what the function returns. If a function does not need to return anything, in C++ there is a convention of having it return 0.
}

Monday, December 26, 2011

Imaginary Number Module

What follows is a simple bit of C# code for handling complex numbers. This was developed for a quantum mechanics engine I'm developing.
namespace ImaginaryNumber
{
    /// <summary>
    /// A class for handling complex numbers.
    /// Author: James Yakura/sidhe3141
    /// </summary>
    public class ComplexNumber
    {
        /// <summary>
        /// The real part of the number.
        /// </summary>
        int real_part;
        /// <summary>
        /// The imaginary part of the number.
        /// </summary>
        int imaginary_part;
        /// <summary>
        /// Creates a new complex number.
        /// </summary>
        /// <param name="real">The real part.</param>
        /// <param name="imaginary">The imaginary part.</param>
        public ComplexNumber(int real, int imaginary)
        {
            real_part = real;
            imaginary_part = imaginary;
        }
        /// <summary>
        /// Multiplies by a real number.
        /// </summary>
        /// <param name="mult">The number to multiply by.</param>
        /// <returns>The product of the two numbers.</returns>
        public ComplexNumber MultiplyBy(int mult)
        {
            int temp_real = real_part * mult;
            int temp_img = imaginary_part * mult;
            return new ComplexNumber(temp_real, temp_img);
        }
        /// <summary>
        /// Multiplies by a complex number.
        /// </summary>
        /// <param name="mult">The number to multiply by.</param>
        /// <returns>The product of the two numbers.</returns>
        public ComplexNumber MultiplyBy(ComplexNumber mult)
        {
            int temp_real = real_part * mult.real_part - imaginary_part * mult.imaginary_part;
            int temp_img = real_part * mult.imaginary_part + imaginary_part * mult.real_part;
            return new ComplexNumber(temp_real, temp_img);
        }
        /// <summary>
        /// Adds two complex numbers.
        /// </summary>
        /// <param name="add">The number to add.</param>
        /// <returns>The sum of the two numbers.</returns>
        public ComplexNumber AddTo(ComplexNumber add)
        {
            int temp_real = real_part + add.real_part;
            int temp_img = imaginary_part + add.imaginary_part;
            return new ComplexNumber(temp_real, temp_img);
        }
        /// <summary>
        /// Converts a real number to complex form.
        /// </summary>
        /// <param name="input">The number to be converted.</param>
        /// <returns>The complex form.</returns>
        public static ComplexNumber ComplexConversion(int input)
        {
            return new ComplexNumber(input, 0);
        }
        /// <summary>
        /// Gets and sets the real part of the number.
        /// </summary>
        public int RealPart
        {
            get
            {
                return real_part;
            }
            set
            {
                real_part = value;
            }
        }
        /// <summary>
        /// Gets and sets the coefficient of the imaginary part of the number.
        /// </summary>
        public int ImaginaryPart
        {
            get
            {
                return imaginary_part;
            }
            set
            {
                imaginary_part = value;
            }
        }
    }
}

Saturday, December 17, 2011

Social Media: 12/9/11-12/17/11

Sorry for the delay. Things have gotten busier since my last final.
Facebook:

Google+:

James Yakura  -  Dec 15, 2011  -   -  Limited
Last final coming up.
 -  Comment  -  Hangout  -  Share

James Yakura

James Yakura's profile photo
James Yakura  -  Dec 14, 2011  - 
+1'd on sidhe3141.blogspot.com
 -  Public
Legal disclamer: I did not actually contact Jack Chick to borrow his "character". Bob is so lacking in personality anyway that he's hardly Chick's invention.
scribblings on the bedlamite's wall. tom's in his cloister, all's right with the world. A blog about science, philosophy, and other things that some random person finds interesting. Click ...
 -  Comment  -  Hangout  -  Share

James Yakura

James Yakura's profile photo
James Yakura  -  Dec 12, 2011  - 
+1'd on sidhe3141.blogspot.com
 -  Public
And now dwarves get a turn.
scribblings on the bedlamite's wall. tom's in his cloister, all's right with the world. A blog about science, philosophy, and other things that some random person finds interesting. Click ...
 -  Comment  -  Hangout  -  Share

James Yakura

James Yakura's profile photo
James Yakura  -  Dec 11, 2011  - 
+1'd on notalwaysright.com
 -  Public
The Devil's Logic. Retail | Pune, India | At The Checkout. (I am a customer checking out at a famous Indian supermarket. To make things faster, I am putting the stuff from my cart onto the conveyo...
 -  Comment  -  Hangout  -  Share
Twitter:
It is not enough to have a good mind. The main thing is to use it well. ~ Descartes
So this is why I am going to Hell, but someone could have Siri-levels of fun with this:
From each according to his abilities, to each according to his needs. ~ Karl Marx
I am not an Athenian, nor a Greek, but a citizen of the world. ~ Socrates
scribblings on the bedlamite's wall: Evolution: Part VII: Common Criticisms
scribblings on the bedlamite's wall: Game Theory X: Metagames: Extortion
I just found out the girl I've been seeing for a month likes Twilight.
In a republic this rule ought to be observed: that the majority should not have the predominant power. ~ Cicero
Cease to think that the decrees of the gods can be changed by prayers. ~ Virgil
BBC News - Age of criminal responsibility 'too low', experts say
When I take my hair out of a ponytail, it leaves a weird crease.