Category: Discoveries

I can’t remember where I saw this, but a nice human with an odd smile has created a pretty nifty scheme for serializing public-domain books via RSS. He claims it’s probably slow and buggy, and indeed I couldn’t get it to work the first time I tried, but now I am happily reading through The Well at the End of the World, which is way too dense to read in large chunks on a screen, but works perfectly at a page a day. (I’m reading this book in particular because it has several of the best entries in my Dictionary of Imaginary Places.)

Anyway, you can pick any of the many books on the site if you want to do this yourself, or you can even read along with me.

For a long time I pretended not to play RPGs

More than a third (it used to be more than half) of the things I’ve bookmarked at del.icio.us/xorphus are related to role-playing, in theory and practice. I wasn’t sure why, exactly, until a couple of days ago. Hopefully in a few days it will become clear to you too.

Anyway, one of the links I just got around to reading today is the brilliant Roleplaying Theory, Hardcore. Unfortunately it doesn’t have permalinks or anything, but if you scroll down you’ll get to an entry called “A Small Thing About Suspense,” which suddenly makes clear to me things I should have realized a long time ago about scenario creation and writing in general.

I want to design games for a living, but I come up with ideas for stories much more often than I come up with ideas for games. I want to reduce that ratio, and I’m hoping all this reading and That Which Will Become Clear will help.

I will probably get corrections on this

Theoretical problems in computer science are divided into classes based on their complexity. One class, called simply “P,” covers all problems requiring a yes-or-no answer that can be answered in polynomial time–which is to say that the amount of time needed to solve the problem is the result of substituting its input size for the variable in a polynomial equation. This is an important distinction, because that usually means it can be solved by a given deterministic computer (regardless of its speed) in some reasonable amount of time (ie before the universe ends).

There’s another class of problems, called “NP,” that has a special relationship with P. If a problem is in NP, there is no known algorithm for it that produces a solution in polynomial time–but the problem of verifying any given solution to the NP problem is in P. So you can figure out whether an answer is correct relatively quickly, but determining what the answer is could take a very long time. Longer than the sun has left in its life, for example, or longer than the universe has been in existence so far.

A final set of problems, called “NP-Complete,” is a special subset of NP. NP-Complete problems are very general and powerful–so general, in fact, that any NP problem can be transformed into an instance of any NP-Complete problem (and the transformation algorithm produces results in polynomial time). As you might imagine, these problems are very hard to solve, but of course their verification problems are in P.

If anybody ever produces an algorithm that will solve an NP-Complete problem in polynomial time, it will mean that all NP and NP-Complete problems are also solvable in polynomial time. NP and P will be equivalent sets. This would be a huge breakthrough in theoretical computer science, and it is likely that it will never happen.

But nobody’s proven that any NP-Complete problem isn’t in P, either. We only know that NP-Complete problems are not in P yet. (There’s a standing bounty on this; proof either way will get you a cool million bucks.)

As with most things that seem pointlessly theoretical at first, it’s not hard to apply the P-NP distinction to real life. It’s often easy to figure out that you’ve received an obfuscated message of some kind, whether it’s encrypted or noisified or divorced from its context. It may even be easy, given a possible meaning for the message, to decide whether that meaning applies. But deciphering the message from scratch can be very, very hard.

The difference between knowing that something is a message and knowing what the message means produces the best small mysteries.

And I pretend I don’t care about having an audience

The NFD LJ feed and the Anacrusis LJ feed each have exactly 32 subscribers. Of those, 23 of the NFD subscribers are on my LJ friends list, whereas 12 of the Anacrusis subscribers are. Only 10 people on said friends list subscribe to both.

Interesting, but probably only to me.

I would like to have similar statistics for the regular RSS feeds, but of course there’s no big site organizing and tracking who hits those. Does anybody know a way to parse Apache log files and see who’s hitting a given location? My current (weak) webstats software won’t do it.