Re-Starting An Old Program

A few years ago, I ran a program called Project Eschaton, in which I collected statistics for Atlanta Braves prospects.  I liked it and a few other folks did as well, but unfortunately, last year was really tough on time, so I didn’t have an opportunity to continue the program.  Now, however, my studies are mostly complete, so I can dedicate my time to more productive and enjoyable things, and so I am re-starting Project Eschaton.  I haven’t come up with a new name for it yet, but I have found that, fortunately, a large chunk of my old program still works and just needs to be updated in order to incorporate some additional statistics.

Unfortunately, however, I have lost all of my old webpages, so I must re-start the web portion from scratch.  That will not be a lot of fun, especially because all of my PHP books are at home and I haven’t used the language in a couple of years, but it will give me a chance to experiment some and maybe improve on my previous design.

I am looking forward to working some more on this project, especially because I’m going to try to automate it from top to bottom, so if everything goes as planned, I don’t have to do a thing.  And if I don’t have to do a thing, I might even update it more often than before.  Before, I would cover the statistics weekly and have to do some work each week to make sure everything is alright.  But now, if I can get everything going, I might decide to update a bit more often.  But first I have to get everything going…


A Philosophical Conundrum

On Tuesday, I was talking to Jianhong about the following philosophical conundrum, described in the all-time classic book, John Dies At The End.

Let’s say you have an ax. The kind that you could use, in a pinch, to hack a man’s head off. And let’s say that very situation comes up and for some very solid reasons you behead a man. On the follow-through, though, the handle of the ax snaps in half in a spray of splinters. So the next day you take it to the ax store down the block and get a new handle, fabricating a story for the guy behind the counter and explaining away the reddish dark stains as barbecue sauce.

Now, that next spring you find in your garage a creature that looks like a cross-bred badger and anaconda. A badgerconda. And so you grab your trusty ax and chop off one of the beast’s heads, but in the process the blade of the ax strikes the concrete floor and shatters.

This means another trip to McMillan & Sons Ax Mart. As soon as you get home with your newly-headed ax, though, you meet the reanimated body of the guy you beheaded last year. He’s also got a new head attached and it’s wearing that unique expression of “you’re the man who killed me last Spring” resentment that one so rarely encounters in everyday life.

You brandish your ax. He takes a long look at the weapon with his squishy, rotting eyes and in a gargly voice he screams, “that’s the same ax that slayed me!”

Is he right?

My commentary beneath the fold. Continue reading

My Roommate Has Gone Missing

I have a roommate who I never actually see.  He works during the week, comes home pretty late, and then goes home to his wife and kids on weekends.  I haven’t physically seen him since sometime in December, but usually I’ll hear him.  But right now, he’s gone missing.  The night that I came back from Italy, I heard his door open and, not wanting to break the streak of non-appearance, I didn’t go out to talk to him or anything.  Since then, his door has been slightly ajar, so I know not only that he has not returned, but also that he still has stuff in there.  Tomorrow will mark two weeks from his last appearance.

It’s just weird is all.

My First Thesis Breakthrough

I started to do some realish work on my thesis today.  The most important thing that I did was to come up with a list of functions and terminals that I want to use for my genetic programming.  A terminal is an end state.  In the case of the prisoner’s dilemma with an exit option, the choices are cooperate (C), defect (D), and exit (X).  A function, however, takes a number of arguments, and I decided that I want to use functions of the if-then-else sort, so for example, (If the player defected on the last turn) (then defect) (else cooperate) would look like:

OppDef – D – C

It actually looks much better in a depth-first tree, but I can’t really do those in this font, sadly.  So I came up with a number of these functions which, when taken together, will allow you to draft pretty much any reasonable strategy and plenty of unreasonable strategies in an infinite-horizon PD game.  Admittedly, I am going to fix the number of stages to 20, but I won’t tell my programs this because I don’t want it breaking down into full defection like a finite-horizon PD game will (assuming perfectly rational agents, as I do).

But there’s one problem here:  there are some strategies which don’t really work easily in this framework.  For example, anybody who has heard of a PD game has heard of Tit-For-Tat, but there is an ugly stepbrother to TFT:  Tit-For-Two-Tat.  In this case, if the opponent defects over the past two turns, then you defect; otherwise, cooperate.  The way I wanted to solve this was to have an AND (and an OR) function, which would take four arguments:

AND – OppDef – OppDef2 – D – C

But there’s a little problem with this:  OppDef and OppDef2 are boolean functions which take two arguments!  I was puzzling over this some until I explained the problem to Jianhong and then while she was talking, she asked why I didn’t do something-or-another and then it hit me.  Please excuse the very, very messy notation that I’m using here:

OppDef – OppDef2 – D – C – C

In other words, you start at OppDef.  If this is true, move to OppDef2.  If that is true, D is the choice.  Otherwise, C is the choice.  If OppDef is false, C is the solution.

You can do the same thing with a strategy of TTFT:

OppDef – D – OppDef2 – D – C

If the opponent defected in the previous round, automatically defect.  If the opponent cooperated in the last round but defected two rounds ago, still defect.  Otherwise, cooperate.

And you can even get the XOR:

OppDef – OppDef2 – C – D – OppDef2 – D – C

In this case, cooperate if the opponent cooperated both times or defected both times.  It’s not really that smart of a strategy, but at least I can make it work…

Yeah, it’s simple logic to turn If statements into And and Or statements.  And it’s not that difficult to turn And/Or/Not statements into If-Then-Else, but I just reinvented the wheel and I’m giddy as a schoolgirl in a nitrous oxide factory.

My next goal is to try to come up with some works on morality as emerges in market situations.  I’m sure somebody’s written on it and I want to tie that in to my work, but I need to find the papers.  Hopefully my professor will be able to assist me on that one.  In the meantime, I have some books and papers which I’m going to start going over to see if I can glean useful information from them.  I might even do some of that tomorrow…

Cyrillic keyboard designs

That’s right, ladies and gentlemen, it’s time for another edition of Reviews You Can Use! I know that many of you potentially use Cyrillic, have heard of Cyrillic, or know somebody named Cyril. I am here to tell you about the best keyboard layouts for both Russian and Ukrainian (spoiler: it isn’t the default settings).

Russian: The best example is in a layout called “YaWERT.” The Russian ‘я’ replaces ‘q’, with the others falling into place. This is far better than the default layout, which is designed for native speakers (much as QWERTY is designed for native English speakers). Instead of remembering the locations of 30+ letters, you only have to remember about seven.

Ukrainian: A similar phonetic arrangement was designed for the Ukrainian language. There are different letters in both languages that prevent you from using Russian for Ukrainian words or vice versa.

So there you have it. If you need to find these layouts, google “YaWERT” and you’ll find them in no time.  Most importantly, this means I can torture you like Kevin does, only using Russian or Ukrainian instead of Hebrew.

Bureaucracy In Action

I am in the middle of reading James Q. Wilson’s impressive tome on bureaucracy and thanks to Tim Worstall, I’ve found a way to apply this.

So basically, a firefighter goes above and beyond the call of duty and his manager chastises him, stating that he should not have jumped into the water and “there is no statutory obligation to carry out rescues from moving water.”

Instead of praising the firefighter for doing a commendable and heroic job, the manager immediately cowers into legalistic reasoning. Part of this could be due to future threats of lawsuits based on negligence (“You saved this person, so why not my brother/daughter/wife?”) and he was pointing out that this was an extraordinary event so as to not set a precedent. But there’s a second reason as well: the type of bureaucratic organization.

Wilson distinguishes two primary dimensions of bureaucratic organizations: whether the outcomes are known and observable to managers and whether the process itself is known and observable to managers. A fire department is an interesting case here, as we have a good idea of the outcomes (whether the fire was put out or the person rescued) and the process (how quick the response time was, training the firefighters), but a manager’s knowledge is not perfect. Wilson uses the example of a cop on the beat as a case where neither the process (just where is the cop?) nor the outcome (what is the end result on the patrol area with this cop?) is really well-known. For the manager of a fire department, however, the process is pretty well-known, as the process is coordinated and centralized: stations get information of a fire or something needing their assistance and units are dispatched from headquarters. But the outcomes are not observable to managers sitting back at the headquarters. Thus, even though the outcome is ultimately knowable thanks to after-action reports and any footage taken, the manager still doesn’t have complete knowledge at the time, in the sense that he cannot affect the outcome like he could if he were on the spot.

So this kind of bureaucracy is called a procedural bureaucracy, and the classic example is the army in peacetime.  Officers and NCOs drill soldiers incessantly because they don’t know how their army will fare in combat but hope that they are providing a positive impact.  These bureaucracies emphasize process over everything else because the process is what they can control.  And this sounds like an example of a procedural bureaucracy.  The manager here is explaining that the firefighter—despite doing a heroic thing—was not obeying the process.  For a procedural bureaucrat, this is the greatest sin possible.