Monthly Archives: November 2004

Piano Concerto

I’ve been absent here for some time now, so I’ll fill you in on what I’m doing. In particular, what I’m doing musically. I have started a piano concerto!

At first, I didn’t want to share it with anybody, and present it when it was finished. This is justified for me, since it seems that if I get negative, unspecific feedback then I give up. But I’m deciding to be stronger than that.

I’ll share with you my journey of writing this piano concerto. Feel free to comment, suggest improvements (please only do this if you listen to classical music, though), etc. Of course “make it longer” isn’t a good suggestion, because I’m working on that :-).

The file I’m posting today is the exposition and the very first tip of the development. The exposition is about three minutes long. I intend the development to be about 7, and then a conclusion for one or two. The file will probably not sound very good unless you have a kick-ass sound module (and if that, not unless your sound module is balanced the same way as mine), so use your imagination. Listen to the notes, not the sound. I won’t put an mp3 up unless someone asks nicely.

So here it is: the first 3:45 of Luke Palmer’s Piano Concerto no. 1 in B minor.

UPDATE: By the way, I’m only talking about the first movement. I’m in the process of formulating the form and getting some rudimentary ideas for the last two movements.

UPDATE: And by request, here is the MP3.

Prime basis is a vector space

Just an interesting fact. The prime basis (the system Gödel used for his incompleteness theorem) is a vector space over the integers.

The prime basis encodes sequences of nonzero integers into single natural numbers. I’ve used it to check units at compile time using C++. It’s like a base representation for the integers, except that each digit can be as high as you like. You construct the sequence by raising each consecutive prime to the power of the element in the sequence. For example, the sequence (1,4,0,3,6) is represented by the integer 21345073116 = 98438558526. This is a unique representation of this sequence by the fundamental theorem of arithmetic.

This can be extended to a vector of integers (as opposed to nonnegative integers) by allowing the representaton to be a positive rational. Just take the numberator, decompose it, and subtract the decomposition of the denominator.

I’ll now show that this is a vector space over the field of integers. Take u and v to be vectors, and u and v to be their rational representations. Let a and b be integers.

  • u + v := uv
  • a u := ua
  • 0 = 1 := 1 (that is, the zero vector and the scalar identity are both 1)
  • Closure, additive associativity, and additive commutivity trivially hold by the definitions above.
  • If u is any vector then u + v = 0 and v = 1/u.
  • Multiplicitave associativity: (va)b = v(ab).
  • Distributivity of multiplication: (uv)a = uava.
  • Distributivity of scalar addition: va + b = vavb.

Planned Play

I’ve adopted the strategy of making planned plays in Poker. I usually make my concrete plan on the flop, from a loose plan preflop. I’ve found that this strategy takes my play to a new level, and I’m beginning to conjecture why it works so well.

I think the main reason it works well for me is that it takes my mind off my cards, and off the strategy, and puts me in observation mode. It’s the same reasoning as waiting until your turn to look at your cards: it’s not that you give away information when you look, it’s that you miss information being given to you because you’re busy thinking about your hand.

It also allows you to focus on acting and social manipulation without delay. You can convincingly act like you were gold from the flop (only if the flop is paired or scary in some way, though) when the turn comes, because you were expecting to act like that. If you wait until the turn to make that decision, your acting will be nervous and hesitant.

Namaste points out a big flaw in planned plays in poker: anything can happen on the flop or the turn. I’ll point out a key part of my strategy to counter this. My antennae are up when I’m playing. If a card comes that matches a hand I put somebody on, or that is inconsistent with my plan, I make a new plan. Most of the time this plan is to go into shut-down. But if there’s a big pot, then I’ll reconsider everything and think about how I could possibly get this pot.

In general, making plans and deciding when to follow through is just easier than deciding what to do at every stage of the game. That’s why I think it works.

The Return of the Commentant!

Okay, I’ve re-enabled comments, using a very sophisticated technique that I found on Kim’s blog. You have to go through the difficult and tedious task of typing ‘h’, ‘u’, ‘m’, ‘a’, ‘n’ on your keyboard each time you post.

I figure this will work since my blog isn’t popular enough to warrant anyone writing in a special case in their script for it. We’ll see, though…

Misère Poker

I’ve been pondering a misère poker tournament. A misère game is a modification of a game where each player tries to lose the original game (modified with peer assistance from “where you try to lose,” because you never try to lose). So the first one out wins.

What kinds of hands would you play? Low ones, of course. But you’d try to convince your opponent that you’re beating him but you don’t know it. This is a hard thing to do. I wonder if some modification of the game is necessary, like if you fold you take the money in the pot (misère chess needs modifications to be interesting). If I can figure out an appropriate modification, we’ll play one at 6:30 next Saturday.

Another not-quite-so-esoteric variant I’ve been considering is a “bounty-only” game. Everyone puts up, say, $5 in front of them. When you take someone out, you take their bounty and add it to yours. Here’s the kicker, though: if you take someone out and they have more bounty than you, then they get to keep the difference. That is, you can only take as much as you have. We might play that next Saturday, too. I’m going to do it before our 7:30 game, so those who just want to play regular Hold’em As God Intended It can.

Efficient Inheritance Relationship Checking

I’m working on a team making an RPG, and the lead designer needed a way to quickly check whether some class A (on the data level, not the code level) is derived from another class B. Here is the solution. This is actually a solution for mapping any partially ordering relation into pairs of real numbers.

Static Forward-Reverse Order

This is the best way if you know your entire hierarchy at compile time. Assign each class two numbers as follows: The base of the hierarchy gets the pair <0,0>. From there, do a leftmost preorder depth-first traversal and assign the first element of the tuple increasing natural numbers. For example:

                /    \
             <1,>   <3,>

Now start at the top again, and do the same thing for the right element of the tuple, starting at zero, and doing a rightmost traversal. So this hierarchy becomes:

                /    \
             <1,2>  <3,1>

And now, a class with the tuple <a,b> is derived from <c,d> iff a ≥ c and b ≥ d. If a<c and b<d, then <a,b> is a parent of <c,d> If neither of these cases hold, then the two classes are siblings.

Continue reading Efficient Inheritance Relationship Checking


I consider myself an optimist. Whatever happens, I look at it as if it were the right thing, and that the future is something to look forward to.

And yet, I believe November the second is a more tradgic date for the United States than September the eleventh or December the seventh. The things that Cheney will do to this country in the next four years will be greater in magnitude than anything in the 20th century and unmatched by anything in the 21st century. I don’t care about Bush—he’s an idiot.

But here’s my optimistic perspective. I haven’t had to try to take on this perspective: it is inherent in my nature.

As cheney runs the national deficit so high as to make the government powerless, Bush decieves the American people that the war in Iraq is good for the economy. But you can’t decieve people forever. When the economy crashes and the government becomes a corporation, the people will know. Americans will not be opressed—not conciously.

And I believe that this is the time, whenever it comes, that capitalism in its whole crashes to the ground. There are many theorists who believe that we’re overdue for a social change, and I can see the breakdown of capitalism all around me.

And whatever comes after that, that is what I look forward to. I don’t know what it is, and there’s a good chance it will not be pretty, but I look forward to seeing what it is. That is the role that I’m taking now. I’m choosing to stay in the country and to watch what happens.

On the plus side, no great composer has lived without hardship. If I’m ever to be a great composer, I’ve got to start suffering somehow. :-)