13 December 2009

Step-die RPG systems and variance

I once heard a sports pundit—it may have been Frank Deford—say that amateur golfers ought to stop saying, “At least I’m consistent.” He argued that consistency was exactly what separated the amateur from the professional.

I mentioned that I like the idea of “smaller is better” step-die systems over the more common “bigger is better”. Here’s why: In a step-die system, the variance of a skill check changes with the character’s skill. In a “bigger is better” step-die system, the variance increases with character skill. In a “smaller is better” step-die system, the variance decreases with character skill.

The latter makes more sense to me.

12 December 2009

Dictate

Dictation for the iPhone is very impressive. I am not sure, however, that speaking this message has been faster for me than typing it. Furthermore I think the time it takes me to type a message is dwarfed by the amount of time it takes me to organize and compose my thoughts.

11 December 2009

The trouble with retweeting

It bothers me when someone I follow on Twitter says “please retweet”.

Case 1: Someone who follows me also follows the original tweeter. My retweet will just be noise for them.

Case 2: Someone who follows me and isn’t interested in the original tweeter. My retweet will just be noise for them.

Case 3: Someone who follows me who doesn’t follow the original tweeter but would be interested in following them. The retweet is only useful to the extent that it has made this person aware of the original tweeter.

While case 3 is good, a lot of case 1 & 2 noise is going to be generated to achieve it. Surely there are better ways to help people find followees than this.

I think the occasional “this person tweeted something unusually clever or insightful that I want to share” kind of retweet is just fine. “Please retweet”, however, tends to signal my above concerns.

Because it’s just like forwarding e-mail, isn’t it? Occasionally there are times when forwarding an e-mail is exactly the right thing to do. E-mails that were written with the expectation of being forwarded, however, are the one’s that are wasteful.

10 December 2009

Interactive install

Computer install & update mechanisms should ensure that all needed user interaction happens up-front. It should also tell the user when the interactive portion is complete.

People debate whether these machine actually improve productivity, but babysitting them during lengthy operations is clearly unproductive.

09 December 2009

Separating layout

The hypertext markup language (HTML) used to create the pages of the world-wide web began as a description for simple documents with hyperlinks. It supported headings, paragraphs, lists, and links. (Plus a handful of other things.)

Then tables were added. (Also notable was the addition of forms, but that’s another branch of the story.) Tables could not only be used to display tabular data, they could also be abused to create layouts beyond simply headings, paragraphs, and lists.

As styling was added to HTML, there was also a move to separate style from content, which brought us cascading style sheets (CSS).

There were problems with table-based layouts. To try to get away from the problems of table-based layouts, people have tried various HTML+CSS tricks. Many of which are based on a grid. Personally, I find these at least as troublesome as table-based layouts.

Perhaps we should separate content, style, and layout. HTML tables are, I think, a good way to describe a grid-based layout. If we, however, separate them from the content, does this eliminate or mitigate the problems we had with table-based layout?

OK, at this point, some understanding of HTML and CSS will be required.

Imagine a grid file containing mark-up similar to HTML tables. We’ll replace “table” with “grid”, “tr” with “row”, and “td” with “cell”. Cells support the rowspan and cellspan attributes. Cells contain CSS selectors that indicate what content from the HTML file should appear within that cell in the layout’s grid.

<grid>
  <row>
    <cell rowspan="2">div#header</cell>
  </row>
  <row>
    <cell>div#body</cell>
    <cell>div#rightsidebar</cell>
  </row>
  <row>
    <cell rowspan="2">div#footer</cell>
  </row>
</grid>

There’s probably a better way to describe layout, but I think HTML tables aren’t a bad start—once separated out. Personally, I’m not crazy about SGML/XML for things other than mark-up. S-expressions or some other syntax might be preferable. (CSS has its own syntax, so let’s not feel constrained to keep SGML/XML syntax for grid files.)

; Just a thought...
(grid (row (cell (2 1) div#header))
  (row (cell div#body)
       (cell div#rightsidebar))
  (row (cell (2 1) div#footer)))

Without browser support for grid files, we could write a program that would read HTML and grid files and generate HTML that faked it with tables.

Just a thought.

P.S. Since writing this, I came across this: The Evolution of Web Design

08 December 2009

Robilar’s method

For the role-playing gamers...

I don’t remember exactly where I read this, but I thought it was very interesting how Rob Kuntz’s character, Robilar, explored the dungeons under Castle Greyhawk. (Apologies if I’m misremembering any of this.)

He would often travel alone. Although human, he would explore in the dark—just following the walls and keeping his ears open. He might use some light at an intersection, but only briefly when he felt it was safe to do so. He would not open doors. At least, not until he’d explored what he could without opening doors.

There are some interesting things to note here:

This (as Rob was playing it) isn’t a game of combat. This is a game of exploration.

If this had been a computer game, Robilar’s method would only be possible if the designers had specifically enabled it. Well, that may not be entirely true, but how many CRPGs are there in which Robilar’s method is possible? While D&D may have rules to cover some of this, that is only because Rob did it so Gary added some of the stuff he made up to handle it to the rules.

Robilar was a fighter. If I understand correctly, his companions when not alone were other fighters and mages. Neither clerics nor thieves were considered vital.

Robilar survived despite traps, “save or die” situations, the level-draining ability of undead, and so forth. As much as I’ve sometimes seen such things as arbitrary, unfair, or unfun; Robilar managed them. I suspect due to a combination of Rob being cautious and Gary being fair.

This also reinforces for me something Gary himself said: If you played with Gary at a convention, he was assuming you wanted a no-holds-barred experience. Gary was a different DM at conventions than when not at conventions.

07 December 2009

Prefix notation via closures

For the programmers in the audience...

Recently I’d read yet again someone saying that prefix notation is one of the things keeping more people from using Lisp. As I’ve said before, I find it hard to believe that this is an obstacle in practice. Especially since so many languages limit infix notation to essentially numbers (and only built-in numeric types at that) and Boolean values.

(Keep in mind that I’m saying this as someone who was raised on C rather than Lisp.)

Then I started thinking about the way that method invocation in many object-oriented languages is infixish. Consider Smalltalk: "hello" at: 3 Or Java: "hello".charAt(3) Or even: bigInt.add(anotherBigInt)

So, by using the closure-as-object idiom in Scheme...

(define (number-object-ctor n)
(λ (op arg)
  (if op
      (number-object-ctor (op n (arg #f #f)))
      n)))

(define (print-number-object n)
(display (n #f #f))
(newline))

(define x (number-object-ctor 4))
(define y (number-object-ctor 5))

(print-number-object (x + y))
(print-number-object ((x * x) + (y * y)))

It’s not as practical as an infix macro. I just thought it was interesting, however, that prefix notation could be twisted into infix notation that way.

06 December 2009

Camera tricks and virtual cameras

While watching Up, it struck me how Pixar (and other 3D animation studios) delight in simulating the limitations of a camera’s focus. Creating shots in which one element is in focus and background and foreground objects are out of focus.

Yet, when making films with actual cameras, filmmakers have used tricks to workaround those limitations. Like building large props or combining two shots of the same scene with different focus.

05 December 2009

Stupid or a jerk

[...] their animation director, Rob Hughes, agreed: “in all the other shows every character is either stupid or a jerk, but there are no stupid characters or jerks in this one.”

“Phineas and Ferb”, Wikipedia

This is something that I really like about that show. So many of the characters on the shows my kids watch are fools. It’s one thing to have a token fool, but...

I heard Bonnie Hunt once say that when doing improv at The Second City, she was taught this guideline: The blue joke will always come to mind first. Skip that, and go with the second thing that comes to mind.

I think foolish characters are the blue comedy of kids’ entertainment.

04 December 2009

A step-die system

Here’s some sketchy ideas for a step-die role-playing game system that I’ll never actually expand into a full system.

Character attributes, skills, and gear are rated by type of die. Dice with fewer sides are better than dice with more sides. Here they are with Fudge equivalents.

  • d2: Legendary
  • d4: Superb
  • d6: Great
  • d8: Good
  • d10: Typical
  • d12: Mediocre
  • d20: Terrible

Notice that we’ve lost the Fudge step—Poor—between Mediocre and Terrible. We use this natural gap between the d12 and the d20 to represent “unskilled” or “no gear”.

When making a “check”, a player rolls three dice. One each for...

  • Relevant attribute
  • Relevant skill
  • Relevant gear

(Or the game might us a different trio. e.g. attribute, skill, and specialty.)

Add each character’s dice together. Low roll wins.

e.g. Herc—with Superb strength, Superb fighting skill, and a Superb sword—would roll d4 + d4 + d4. Mouse—with Mediocre strength, no fighting skill, and no weapon—would roll d12 + d20 + d20.

In unopposed situations, the judge could either pick a static difficulty number that must be rolled under. Alternatively, a die roll could determine the difficulty. You could even come up with three different aspects of difficulty each represented by its own die.

I like the roll-low for a step die system, although it creates a ceiling. I’m not sure that the more typical roll-high step die is really any different besides swapping the ceiling for a floor.

22 November 2009

Micah 6:8

A popular verse from today’s Sunday school lesson in a lesser known form:

But he’s already made it plain how to live, what to do, what God is looking for in men and women. It’s quite simple: Do what is fair and just to your neighbor, be compassionate and loyal in your love, and don’t take yourself too seriously—take God seriously.

—Micah 6:8 (The Message)

12 November 2009

The problem with Javascript’s map

This is about Javascript programming. If you’re not interested in Javascript programming, bail now.

Say you have a Javascript array of strings that you want to convert to numbers.

['1', '2', '3'].map(parseInt) ⇒ [1, NaN, NaN]

Hmm. Why didn’t that work? Because parseInt takes an optional parameter (the radix)...

parseInt('ff', 16) ⇒ 255
parseInt('2', 1) ⇒ NaN // Because a radix of 1 always returns NaN
parseInt('3', 2) ⇒ NaN // Because 3 isn’t a valid binary digit

...and map passes an optional second parameter (the index).

[1, 2, 3].map(function(n, i) [n, i]) ⇒ [[1, 0], [2, 1], [3, 2]]

Occasionally it is very handy to have map give you that index. Often, however, I want to give map a function—like parseInt—that wasn’t explicitly designed to be used with map.

Here’s how to fix it.

['1', '2', '3'].map(function(_){return parseInt(_);});

Yuck. Not only is that verbose, it looks downright silly since the closure looks pointless.

Expression closures can address the verbosity...

array.map(function(_) parseInt(_));

..., but (currently) only Firefox versions 3.0 and later support that. Plus, it still obscures why you’re doing it.

In Scheme, I’d use cute from SRFI 26. It allows you to specify some parameters of a function. The “<>” is used for parameters that you don’t want to specify.

(map (cute string->number <> 10) '("1" "2" "3"))

Of course, while string->number takes an optional radix parameter like parseInt, Scheme’s map doesn’t pass the index, so this isn’t necessary.

Back to Javascript. A “unaryize” function looks nicer than an explicit closure and makes what you’re doing clearer.

function unaryize(f) {
return function(_) {
return f(_);
}
}

['1', '2', '3'].map(unaryize(parseInt)) ⇒ [1, 2, 3]

We could generalize unaryize to naryize.

function naryize(f, n) {
return function() {
return f.apply(null,
Array.prototype.slice.call(arguments, 0, n));
}
}

['1', '2', '3'].map(naryize(parseInt, 1)) ⇒ [1, 2, 3]

In practice, I’ve run into uses of unaryize several times, but I haven’t yet run into a need for naryize. Also, naryize is less efficient than unaryize.

What if we want to specify a radix? We could create a Javascript version of cute. I’ll use undefined instead of “<>” for the slot specifier.

function cute() {
var cutargs = Array.slice(arguments);
var f = cutargs.shift();
return function() {
var args = Array.slice(arguments);
var fargs = [];
var i;
for(i = 0; i < cutargs.length; ++i) {
if(undefined === cutargs[i]) {
fargs.push(args.shift());
} else {
fargs.push(cutargs[i]);
}
}
return f.apply(null, fargs);
};
}

['a', 'b', 'c'].map(cute(parseInt, undefined, 16)) ⇒ [10, 11, 12]

Again, I haven’t yet run into many cases where I’d want to use cute that unaryize doesn’t suffice. In this specific case, I think I’m happy with the explicit closure.

['a', 'b', 'c'].map(function(_){return parseInt(_, 16);});

Additional notes:

Array.map can be implemented in Javascript and added without any changes to the interpreter. I’m using Prototype’s.

Expression closures can’t be added without changes to the interpreter, but they can be faked with strings. See Functional Javascript

While cute can be implemented as a function, SRFI-26’s cut has to be a macro. Likewise, a cute macro is more efficient than the procedure implementation.

05 November 2009

Pogue says call them “app phones”

In Call It an ‘App Phone’ (A What?), David Pogue suggests “iPhone-like” devices should be called “app phones”. (The link in to nytimes.com, so you either have to register to read it.)

Calling it a “phone” at all seems silly to me. The phone is just one feature and not the most important one.

These are palmtop computers. “PDA” would fit; I just never liked that term.

15 October 2009

Unexpected error

If you aren’t a computer programmer, no doubt you’ve been really frustrated by an unhelpful error message. Actually, programmers get frustrated by it too.

The thing is, when you’re developing software you often run into places where an error could happen, but you have no idea what could cause such an error. You might know a low-level, programmer-speak reason for the error, but you aren’t aware of the bigger picture that would allow you to write an error message that would be useful to end-users.

This lack of context isn’t for a lack of trying to understand. It is because our computers are very complex system with lots of hardware and software created by many different people and many different organizations. It’s just too complex to know all the different behaviors that can emerge. Not to mention that you will expect my software to work with hardware and other software that I don’t even know exists.

Even when you have the context to write a good end-user error message, there’s a good chance that the same error will happen in a completely different context that you couldn’t have anticipated, which will make your helpful error message misleading instead.

So, often, the best you can do is write a message that will help you know what went wrong. Then when the customer calls, you can figure it out. Then you can fix the problem for that customer and make sure you have a more helpful message in the next release.

There’s still a good chance, however, that a completely different circumstance will then trigger the same error and this helpful message will end up being misleading for those users.

Since error messages that are useful for debugging end up frustrating end-users more than generic error messages, they tend to get discouraged. So we end up with the worst of all worlds: Error messages that are completely useless to everybody.

14 October 2009

Flex-Able

Discussion about my recent post on Van Halen’s 1984 brought up Steve Vai, who worked with David Lee Roth after he left Van Halen. Which brought to mind this blog post started in April that I’d never finished about another album that was released in 1984.

I originally had Steve Via’s Flex-Able on cassette tape. Must’ve been around 1987? I think my guitar teacher told me about it. Earlier this year, I reäcquired it in digital format.

This album isn’t your typical shred-guitar solo album. It’s not like Vai’s other albums. At least, to the extent that I’ve heard his other stuff. None of it that I’ve heard has appealed to me like the stuff on Flex-Able.

I think this album was one of the reasons I bought my first four-track recorder.

Guitar World did a 25th anniversary piece on the making of the album. While working for Frank Zappa, Steve built his own studio to record this album. He promised his friends who helped him out that one day he would pay them scale with interest for working on the album, and he eventually did. He refused to sign the deals that the record companies offered and did it all the work of releasing the album himself. Quite an accomplishment in 1984.

13 October 2009

Flatland, 10/GUI, and SEO

A trio of interesting things found today. (All thanks to Daring Fireball, I believe.)

In “Flatland”, Lukas Mathis presents a very good rebuttal to some of Tog’s viewpoint. I think I may agree with everything Lukas says there.

Lukas’s blog then pointed me to 10/GUI. I think they hit the nail on the head with the idea that the next step in GUIs is not from two-dimensions to three but to fewer dimensions. I don’t know if they have the answer, but I know that the answer involves the user spending less time managing windows.

In “Spammers, Evildoers, and Opportunists”, Derek Powazek says that “search engine optimization” is a racket, which has been my gut feeling about it. Although, I suspect that the things he calls “obvious” are—sadly enough—not obvious to a lot of people. Those things, however, aren’t really about SEO. They’re just about making a good web site.

12 October 2009

Mac file types and creators

Mac OS X 10.6, a.k.a. Snow Leopard, no longer uses an old Mac method of deciding which application to launch when you open a document. The upshot of it is that, by the old method, a document would usually be opened by the application that created it. With the new system, all documents of the same type will be opened by the same application regardless of which application created the document.

Also, the system will ignore the older way of marking the type of the file in favor of filename extensions. (Which are the “.html”, “.txt”, “.doc”, &c. at the end of a file’s name.)

There is still a way to tell the system to open a specific file with a specific application, but this can only be done “by hand” through the Finder. Other programs cannot safely do this.

Metadata madness” by John Siracusa does a good job of explaining it all in more detail.

Personally, I avoid letting the system choose what app to open files with unless I am very sure of what it’s going to do. I can’t disagree with those who say that the functionality of creator codes ought to be restored, whether in the old form or a newer one. I won’t personally miss it, though.

I think something like Quicksilver is the future. Quicksilver is an application that allows you to quickly find documents and specify what you want to do with them. Even better, it learned from the user and was expandable. Google Quick Search Box seems to be the successor to Quicksilver, though it hasn’t caught up with all of Quicksilver’s features yet.

The biggest problem with the old Mac creator and type codes is that there was never a user-friendly way to manage them. Users could easily get into a situation in which they needed to set or modify the type code for a document, but the system didn’t give them a way to do it. There were utilities to do it, but they typically exposed the codes directly rather than providing the good user-interface you’d expect on the Mac.

UTIs are fine upgrade for type codes. Although, I’m ambivalent about UTI’s depending upon filename extensions. Filename extensions are an awful way to store file type metadata. Yet, I can’t argue with their practicality.

Examining the contents of a file to determine its type is often better than any type of metadata, though there are times when metadata is better. (Mac OS X actually comes with a Unix command-line utility that determines file type by contents.) I think a combination is probably the best choice.

Putting aside the issue that the system doesn’t use bundle identifiers in the same way, they are a fine upgrade for creator codes.

11 October 2009

iPhone dice

One of the interesting things about iPhone dice apps is that the accelerometers give them a source of true randomness. (Or, at least, more random than your average pseudo-random algorithm.) The shake-to-roll feature need not be merely a gimmick.

10 October 2009

The spinner lie

To make software user-friendly, we added progress meters whenever the computer performed a lengthy task. Often, this was more work than you might think. It’s usually easier to just start doing the work and notice when the work has run out than to calculate how much work there is to do so that you can report the “percent done” as you go.

Sometimes, though, we’d run into something where we really didn’t have any way to know how much work there was to do. So, we’d use some type of spinner or throbber. The user didn’t have any idea as to how long the operation would take or how far along it was, but at least they could see that progress was being made and if progress stopped.

Then we’d get lazy. Even when we could calculate how much work there was to do, we’d not bother and just throw up a spinner instead of a progress meter.

Then came the lie. The spinner became an animation that continued whether progress was being made or not.

09 October 2009

Mac/PC apps = trouble; iPhone apps = fun

Bruce Tognazzini—Apple employee #66—developed the first version of the Apple User Interface Guidelines. In “Restoring Spring to iPhone Springboard” he writes:

Unlike the Finder or Desktop, rather than giving access to as many apps as you could possibly want, the current Springboard limits you to 180 apps. Paradoxically, this would not be a bad upper limit on a Mac or PC, as apps tend to equal trouble and the more you have, the more trouble you’ll encounter. On the iPhone/iPod Touch, however, 180 apps is terribly limiting as iPhone/iPod Touch apps translate to fun, not trouble, and the more apps you have, the more fun you can have.

It’s funny because it’s true!

Ever since I bought a Pilot (the first name of the Palm PDAs), I have thought that it presented a pretty good model for how the “next Mac” should work. Besides a lot of legacy stuff that the Mac has naturally accumulated, even it has always forced the user to deal with some concepts users shouldn’t even have to know about. For me, while the iPhone has made some advances, it has also made some steps backwards from the Palm OS.

That’s another post, however, that is sitting around amongst my blog drafts.

You can argue that the user-interface for a PDA or phone is too simplistic for a general-purpose computer, but I’m not convinced. Both my Palm devices and my iPhone come awfully close to being general-purpose computers, and I think that for a great many people, their user-interfaces would be more than adequate on a desktop or laptop machine. (We already have plenty of options for geeks like me.)

Back to Tog’s article: He proposes some changes to the iPhone “home screen” app—internally called Springboard. While I like Tog’s proposal, I think he’s too quick to dismiss search. While I’m not a fan of ditching “browsing” interfaces, I’m seeing search becoming more and more primary.

With maybe a dozen exceptions, I’m more likely to google for a web page rather than go looking for it in my bookmarks. Even back c. 1995, I was more likely to use the Finder’s search to locate files than by browsing. Now, it’s Spotlight. Amongst all the brouhaha around Mac OS X 10.6 (Snow Leopard) no longer supporting creator codes, I’m thinking more than ever that something like Quicksilver is the future.

Of course, I’ll be the first to admit that I’m not the average user, but I think Google’s success shows that average users—when given a really good search capability—will use it.

Time spent improving the app search on the iPhone would give more bang-for-the-buck than Tog’s proposal. So, that’s what I’d do first if I were Apple.

And one mistake Tog made: Using dots to indicate vertical scroll position. This should use the standard iPhone scroll “thumb”.

08 October 2009

Flash on the iPhone

So, Adobe has given Flash developers the ability to build stand-alone apps for the iPhone. There will still be no Flash support in Safari or any other web browser. If you want to write an iPhone app, you won’t want to use Flash; but if you have a Flash app you want to port to the iPhone, then this looks pretty good.

Honestly, I really like this situation. The type of Flash content I’d like to see on my iPhone are the things that are essentially apps. Not having access to Flash used to make annoying web sites doesn’t really bother me.

07 October 2009

Van Halen’s 1984

I recently got Van Halen’s 1984, which is an interesting album. It’s a transition. It’s the last album before David Lee Roth left the band. It has the band’s first (& only?) #1 hit.

There were four hits off this album: “Jump” (#1), “I’ll Wait” (#13), “Panama” (#13), and “Hot For Teacher” (#56). The first two were quite a change for the band, being synth-driven instead of guitar-driven. In fact, I saw concert footage of “Jump” in which Eddie even replaced the guitar solo with a keyboard solo. Looking at the albums and singles that followed, it seems clear that their synth-driven songs were more lucrative than their guitar-driven songs.

Which is kind of funny, because I remember a friend arguing that people wanted to hear Eddie play guitar and that they were going to make less money if he kept playing keyboards. To which I argued that I’d rather listen to music made by following the muse than that made by following the dollars. (Should that be called “lucric”—from “lucre”—instead of “music”?)

Anyway, this raises a couple of questions in my mind:

Were these songs more lucrative because they were synth-driven? Or is there some other difference between the songs Eddie wrote on keyboards and those he wrote on guitar?

To the extent that the instrumentation was a factor, was it a function of the times? i.e. Are keyboard-driven still songs more lucrative today?

04 October 2009

Don’t let the misunderstandings win

This weekend, Andrea (my soon-to-be-ex-wife) made a nice gesture to me. One that was, in fact, very hurtful. I don’t think she intended it to be hurtful. (In spite of the fact that experience has taught me to assume the worst where she’s concerned rather than the best.) I don’t think she understands me enough to realize that it was hurtful.

So, no big deal. I’ve shrugged it off. I’d like to explain to her that it was hurtful and why. That’s what I would want if the roles were reversed. I know now that there’s no point in that.

If the roles were reversed, my experience tells me that she wouldn’t be able to see beyond the hurt, and she would silently resent me for it without my ever knowing.

I also know that, if she were reading this, she would at this point assume that I’m just trying to insult her. Which is not the point at all. The point is that our different natures and expectations led to misunderstandings.

The successful couples aren’t the ones that have no misunderstandings. Every couple is going to have these kind of misunderstandings. The successful couples are the ones that don’t let this kind of little stuff win. They have faith, don’t give up, eventually learn to understand one another better, and come out the other side stronger.

To me, that has always been the whole point of the vows.

At least, that’s what I believe. Make sure that you and your spouse understand that you’re going to run into stuff like this. Promise each other that you won’t let it win. Promise each other that you won’t even think the word “divorce” until you know that you fully understand the issues and that they are worthy of that action. Misunderstandings aren’t worth tearing your kids’ family in two.

When you feel like things aren’t going well, don’t be quiet! You can’t defeat misunderstandings without communication. Don’t think that you can fix it yourself. You can’t fix a relationship without at least enlisting the aid of the other person. More than that, though, don’t hesitate to go to a counselor because they can help you see when problems are really just misunderstandings.

08 September 2009

The Ikea font brouhaha

From The Font War: Ikea Fans Fume over Switch to Verdana:

“The former typeface definitely better reflected Ikea’s design philosophy, giving it a very special, unique flavor that actually fit the company’s style,” says Vitaly Friedman, editor in chief of the online Smashing Magazine, which is dedicated to Web design.

Which is—unintentionally—countered by another of those opposed to this change:

“They went cheap, in other words,” counters Bucharest designer Iancu Barbarasa, who blogged about the font change on his website.

That seems to fit Ikea perfectly to me.

While I understand the issue, I think there are much, much worse choices made every day.

(Personally, I’d rather that my (and your) browser would properly typeset the double-quotes at the start of those quotes much more than I care about whether Ikea is choosing a sub-optimal font.)

07 September 2009

C++ temporaries

So, we found that a sort wasn’t working correctly. The code for the comparison function looked something like this:

const char* a_name = a->get_name().c_str();
const char* b_name = b->get_name().c_str();
return strcmp(a_name, b_name) < 0

Odd code, but before we change it, let’s figure out why it’s failing. It turned out that this change made it work:

string a_name = a->get_name();
string b_name = b->get_name();
return strcmp(a_name.c_str(), b_name.c_str()) < 0

At first blush, it doesn’t look like that should make a difference. It does, though. To see why, let’s rewrite the original to explicitly show the temporary variables that the compiler must generate.

const char* a_name;
{
 string tmp = a->get_name();
 a_name = tmp.c_str();
}
const char* b_name;
{
 string tmp = b->get_name();
 b_name = tmp.c_str();
}
return strcmp(a_name, b_name) < 0

The temporary string objects go out-of-scope at the end of the statement. (Actually, at the end of the “full expression”.) The c_str function—in most implementations—returns a pointer to the temporary’s internal data. When the temporary goes out-of-scope, that pointer becomes invalid. Like is so often the case with this kind of thing, it might seem to work because the data at that memory location may not have changed.

In the “fixed” code, the temporaries get promoted to full local variables. There are const char* temporaries instead (which I think the compiler can optimize away), but they don’t have a destructor to cause the kind of havoc the string destructor did.

My co-worker wondered why temporaries don’t just last until the end of the function. In section 6.3.2 of The Design and Evolution of C++, Stroustrup says that this was originally the case. He found, however, that his users were wrapping statements that might generate temporaries in their own blocks because enough programs would generate enough large temporaries that this would sometimes exhaust memory.

I’d known there were these kinds of issues with C++ temporaries (and even guessed that that might be the issue here), but I’m embarrassed that I never took the time to understand it well enough to recognize exactly what was happening here.

Of course, there shouldn’t have been an issue here at all, because it should’ve been written:

return a->get_name() < b->get_name();

30 August 2009

Sci fi

It used to bug me that the spaceships in Star Wars moved like airplanes instead of like spaceships. Now, I understand that, despite the trappings, Star Wars is mythic fantasy. The fighters are meant to evoke the feel of WW2 movies.

Even today, fighter planes tend to be attacking targets beyond visual range. Not exactly great action movie fodder. How much moreso would it be for fighter spacecraft?

In general it seems strange that in my younger days I enjoyed lots of historical accuracy in my fantasy and lots of scientific accuracy in my science fiction. These days, I tend to enjoy pulp fantasy and pulp sci-fi more.

Anyway, I’ve been watching Defying Gravity, which might be described as a relationship drama with the trappings of 2001. Of course, the trappings of 2001 set certain expectations for me. Which is waking up that nitpicking voice from my youth. Faster-than-light communications? No conservation of angular momentum?

Although, the minute those thoughts come up, another part of my brain starts to rationalize them. Perhaps they’re just “editing out” (as it were) the communication delays. Perhaps there’s a flywheel that spins up even in the case of whatever caused the rotating section to stop rotating.

28 August 2009

iPhone streaming audio

A few of my favorite iPhone apps:

Before I got my iPhone, I already didn’t listen to a lot of music on the radio anymore. I tend to listen to talk more when I turn on the radio. With the iPhone, I’m listening to more music in the car again.

Although I’m going to be talking about streaming audio, I’ll start with the built-in iPod app. I didn’t have an iPod before my iPhone, and one reason was that I was holding out for a multi-function device. So, for you earlier adopters, try to remember what it was like when you got your first digital music player. ^_^ Although, the iPod app also gives me access to more options for talk listening via podcasts.

Of course, several of those are guitar podcasts: Talk about music.

When driving around with the kids, we’ve been listening to Disney radio via ooTunes. I’ve got some music for them on my iPhone, but it’s a nice alternative. And there isn’t a local Disney radio station. Although, I think I originally downloaded ooTunes to serve as a portable radio for listening to a local station.

Pandora is like having a personal DJ. You tell it what music you like, and it plays songs it thinks you will like. It actually seems to work fairly well.

Simplify Media allows you to stream audio from your desktop computer to your iPhone. I was a little disappointed that my iPhone didn’t have enough storage to hold my entire music collection, but Simplify almost makes it a moot issue.

It seems so strange to have a radio station’s signal digitized, packetized, streamed over the internet, broadcast via packet radio, and then fed into my car stereo via an audio cassette adapter. That all seems way over engineered and kludged compared to simple FM radio. It’s also amazing that, even on the Edge network, it tends to work so well. Though, you do have the pause for buffering in the beginning and occasionally the network may not keep up.

Pandora and Simplify, however, give you features that FM can’t. All the music in my iTunes library available to me anywhere I can get on the Edge network or a wi-fi connection. Which, for me, tends to be practically anywhere. I don’t find myself in places without coverage very often.

The annoying thing is that—while reading a book with the Kindle or Stanza apps—I can’t listen to music with any of these except the iPod app. Or if I just want to check my calendar or something, that means killing the music.

The iPod app can also display the current song’s title, artist, and album art on the “unlock” screen, which is convenient. And you can use the button on the cable of the earbuds to pause or skip songs with the iPod app. It is really a shame that these features aren’t available to these other apps.

I’ve concentrated on the primary ways I use these apps, but they have other features as well. And, of course, they aren’t the only apps that do these kinds of things. In fact, I also have three other apps that are for streaming specific radio stations.

27 August 2009

A tale of two Schemes

The Scheme Steering Committee is going to try splitting Scheme into two languages. See their position statement.

The “split” language seems a little off, but the plan seems sound. The “large” language will be a superset of the “small” one, so it’s not like it is a complete fork.

I really have a hard time understanding the controversy. I suppose I’m in the target group of the “large” language, but I want to use a language that meets the expectations of the target group of the “small” language. I don’t see any reason why a single language and a single standard can’t serve both groups.

But it does make sense to separate the various concerns. There is no need to try to fit the core language and the standard libraries into a single effort. Building and ratifying them should be separate processes. In fact, I’d go farther and say that there shouldn’t be a single, monolithic set of standard libraries.

Which begins to look an awful like like R5RS + the SRFIs, huh? At least, if you squint a bit. There was certainly need for improvement, but R6RS seemed to have run off the rails a bit. I mean, it isn’t so bad, but it isn’t really what was needed.

Anyway, it’ll be interesting to see where things go from here. It looks like for the foreseeable future I’ll still be programming in PLT Scheme or Guile more than in any standard Scheme. (Not that I get time to do it much.)

26 August 2009

Dice: Is “higher = better” better?

In games involving dice, do people expect higher rolls to be better than lower rolls? Do they find a game odd if that isn’t the case?

Higher isn’t necessarily better in Craps. In Backgammon, higher numbers get you closer to your goal, but a lower numbers are often better tactically. In Yahtzee, although there is some value in higher numbers, it is generally more about the pokeresque combinations. In Monopoly what is a good or bad roll depends entirely on what square your piece is currently on. In Magic Realm, as I recall, you always wanted to roll low. Higher isn’t better in Bunco.

Of course, I can think of some games where rolling higher is always better. e.g. Risk. It seems common enough that higher rolls are not necessarily better, though.

25 August 2009

The 100 best hobby games

Matt Tarbit assembled pictures of the games from Hobby Games: The 100 Best. (Which is on my wish list.)

How many of them have you played?

I’ve scored a pitiful 15%.

  1. Axis & Allies
  2. Cosmic Wimpout
  3. Diplomacy
  4. Dungeons & Dragons
  5. Illuminati
  6. Kingmaker
  7. Lord of the Rings
  8. Magic: The Gathering
  9. Marvel Super Heroes
  10. Shadowrun
  11. Squad Leader
  12. Star Fleet Battles
  13. Talisman
  14. Toon
  15. Traveller

I may have played Champions. I’ve definitely played it’s offspring, Fantasy Hero. I have played Ark of the Covenant, which is a Carcassonne variant. I played a computer version of Ogre. I own Ars Magica and Pendragon though I haven’t played either.

I haven’t played Formula Dé, but I have a hard time believing it is better than Formula 1. It seems a shame that neither Magic Realm or Source of the Nile made the list.

16 August 2009

App Store update

Since I ranted about iPhone App Store rejections, here’s an update. It seems Phil Schiller, Apple’s Senior Vice President of Worldwide Product Marketing, has stepped in. He’s been personally contacting app developers to resolve some of the issues. It is looking like Apple is getting serious about fixing the problems.

It’s sad that it took lawsuits and attention from the FCC for this to happen, but late is better than never.

05 August 2009

Noggin getting Nick’d

According to idsgn

The decision to streamline the network identities came after they started putting all of the channels’ logos on the same business card—and decided that it looked like a mess

Noggin and The N both seem like good brands with good logos. Rebranding them as Nick Jr. and TeenNick seems like losing more than is gained. I’m not sure that putting all those logos—whether the new ones or the old ones—on each business card makes sense, but I do think the “mess” of the old logos is going to end up looking better than the homogeneity of the new ones.

04 August 2009

Apple App Store rejections

I’m embarrassed to be an Apple customer right now.

I don’t use Google Voice, so the current brouhaha with Google Voice apps doesn’t affect me. It’s another point in the trend, though. Apple insists that iPhone app developers partner with them through the App Store, but they aren’t being a good partner. They should be open and honest about the criteria used to reject apps. They should be clear about the reasons an app is rejected and how the app can be modified to pass. If they yank an app after approving it, they should pay the refunds to the customer.

Furthermore, they should not be rejecting apps for many of the reasons that they are giving. Off the top of my head, I can only think of these reasons that seem legitimate to me:

  • The app compromises the stability of the device (an unstable app is fine as long as it doesn’t compromise the device as a whole)
  • Resource abuse (and I have uneasy feelings about that one)
  • Security issues
  • Privacy issues

No doubt there are others, but the point is that they should be few and used as little as possible.

I have a hard time not seeing some of the reasons that have been given as bogus.

I will say that, looking at some of the lists being compiled, I think many of the rejections have been defensible. Even with those, however, the problem is that developers are left to discover the rules of the game by experiment. Expensive experiments.

This honestly has delayed my plans to upgrade my iPhone. As much as I like their products—which do work besides just looking good—I don’t like doing business with dishonorable companies, and there is a threshold at which bad behavior matters enough for me to choose to do business elsewhere.

Besides, I want a selection of good apps for my iPhone. I don’t want Apple driving developers out of the iPhone app business. I don’t want Apple rejecting apps before I get to decide whether they’re worth my money.

(I’d also like to see Apple allow people—as an option—to install any app from any source with the appropriate caveat utens†. The truth is, though, that I wouldn’t do that with my iPhone.)

I’m not sure if this is right. Participles of deponent verbs always confuse me. ^_^

02 August 2009

Input

Can you touch type? Do you remember how long it took to learn? All those hours of AAAA SSSS DDDD FFFF. Was it worth it?

It’s funny to me how so many people seem so quick to disregard a new input device after less than a day of use. Efficient input requires not only a good device design but also practice by the user. Heck, even voice recognition systems can take some practice to learn to use well.

I used to always tell people that, if they tried using a trackball instead of a mouse, they really needed to try it for a few weeks before they could be sure that they didn’t like it.

When you first try Grafitti, you’re likely to be frustrated. After a few weeks, however, it’s fine. It’s certainly better than any attempt at full handwriting recognition would have been on the Pilot.

The iPhone’s software keyboard may not seem like a great alternative to a hardware palmtop keyboard. After a few weeks, however, most people will be fine with it. The advantages of the software keyboard are numerous.

I don’t know that our laptop and desktop keyboards will be replaced by dynamic, multi-touch surfaces á la Star Trek The Next Generation anytime soon. I do think, however, that palmtop hardware keyboards will soon be in decline.

I really would like a fold-up Dvorak keyboard that would work with my iPhone, though.

01 August 2009

On/off switches

What ever happened to plain, simple on/off switches.

I’ve got (at least) two kitchen appliances (a Foreman grill and an Xpress 101) that are on when plugged in and can only be turned off by unplugging them. I actually found myself wondering if I could get a power strip with separate on/off switches for each plug.

An on/off switch shouldn’t be an accessory.

Now, I do understand that these kind of direct marketing products have to cut a lot of costs, but...really? No on/off switch?

My Digitech RP350 guitar processor doesn’t have an on/off switch either. I actually do use a power strip’s on/off switch for it. sigh All the technology packed inside that box, but an on/off switch was too much.

Some guitar effects, however, have the on/off switch combined with the input jack. If you plug an input into it, it is on. To turn it off, you have to unplug the input. So, it combines the cost and risk of mechanical failure of an on/off switch with inconvenient operation. Brilliant!

Then there are the “soft” power switches. It used to be the on/off switch physically connected and disconnected power to the device. That was too simple and effective I guess. Just the other day I had to pull the power cord on the Wii because the power switch and reset button where unresponsive.

My favorite on/off silliness, however, might be my Yahama acoustic guitar. It’s preamp has a switch labelled “mute” and “off”. “Off” means “not muted” which means “on”. So if I leave it “off”, the battery runs down.

sigh

31 July 2009

You’re a good man, CB

I love You’re a good man, Charlie Brown.

It really gives me the impression, though, that Clark Gesner didn’t really know Peanuts. It’s like somebody just gave him a quick summary of each character.

30 July 2009

United breaks guitars update

An update via “I ♥ guitar”. United has offered to compensate Dave Carroll for damaging his guitar.

That’s good. They should. Yet that is the least of what they should do. People should be fired. Policies should be changed. The company should—as loudly as they can—detail these changes and say, “We were wrong and stupid. We don’t want anyone to have an experience like this with us again.” And not in the typical PR speak. In simple, plain language.

Because the problem isn’t that Dave’s guitar got damaged. The problem is that it shouldn’t be company policy to treat customers the way Dave was treated, and the people who put those policies into place are a liability.

You want people to trust you with their lives and their property? Then you should make it clear that they won’t have to publicly ridicule you via YouTube for you to take those responsibilities seriously.

29 July 2009

Thinking in mechanics

Robin Laws posted an example of play he’d written for HeroQuest (the role-playing game...not the board game) that didn’t make the cut.

That example strikes me as exactly the kind of “thinking in mechanics” that is—for me—antithetical to role-playing games. It’s interesting, though, in that HeroQuest seems to be fairly different than more traditional role-playing games. Yet, I think I dislike “thinking in mechanics” here even more.

Now, it is an example designed to clarify the games mechanics. So, I’d hesitate to extend this observation into a criticism of HeroQuest.

28 July 2009

Bezos apologies for Kindle faux pas

Bezos apologized.

That’s good. Some people say the apology wasn’t necessary, but it was. If you buy a Kindle and content for it, you want to feel like you have control of your property.

(People don’t think of intellectual property as only licensed, and Amazon must deal with customer perception even if it is legally wrong. Not to mention that I’m not convinced that what’s legal is what’s right here.)

Of course, the apology isn’t as important as follow-through.

On another note: For some reason it surprised me that Bezos has an Amazon wish list and submits product reviews.

Lejendary Adventures

So the Gygax day one-shot was my first chance to actually play Lejendary Adventures. I’ve had Essentials (sort of a LA Basic Set) for a while, but a couple of weeks ago I scored a bundle of the full rules on eBay.

I needed more pre-gen characters than the four that came with the Quick Start adventure, so I typed up the three from the examples of character creation from the Lejendary Rules for All Players. I really feel that character creation has a lot of fiddly bits that don’t really add much to the game.

I really like the “skill bundle” Abilities as a middle ground between classes and skills.

I found the full rules just as poorly edited and imprecise as Essentials was. You have to be willing to just make your best guess at what things mean and roll with it. Essentials did actually clarify a couple of things versus the full rules, though.

Of course, I’ve only had the full rules for about a week now, so this is an early impression. There’s a lot of pages there. Gary may have considered it “rules light”, but I’d say more “rules medium”.

The abundance of non-standard jargon was annoying in play. “Ilf” and “wylf” also seemed kind of pointless, especially as wylfs are also called “elves”. It also seemed weird that elves were renamed but dwarves weren’t.

Combat seemed to go smooth enough. As usual with a “damage resistance” armor mechanic, I had a tendency to forget it.

It annoyed me to see the mage have a roughly 1 in 3 chance of failing to cast a spell. Having it resisted or something is one thing, but it just doesn’t feel right for professional magic wielders to have that high of a chance of failing to even cast a spell.

I really like that there are six different magic systems. The downside, though, is that I ended up having to try to quickly grasp four of them. The descriptions of how each works I found very opaque too.

I don’t know. So far, there’s some stuff I really like about it, but I really feel like there’s a lot of fiddly bits and complications that I’ll end up ignoring in the long run.

27 July 2009

Gygax day one-shot

In honor of Gary Gygax’s birthday this year, I decided to run a one-shot adventure. I ended up choosing the Quick Start adventure for Gary’s Lejendary Adventures system.

The players were challenged with coming up with names for their characters...er, “avatars”...that were anagrams of their own names. We had...

  • Calne the Human Noble (Lance)
  • Jerax the Ilf Mage (Jax)
  • Ilia Maechlen the Human Ecclesiastic (Cheli)
  • Hyronac Metrenul Loncug the Dwarven Soldier (Von)
  • Dalec Noclum Ghûld the Kobold Elementalist (Don)

Since it was a week-night, we didn’t really get rolling until late and had to end early. So, we only got through the exposition and first encounter and to the second one encounter. Still, fun (and Oreo cake) was had.

I didn’t really think of doing anything else besides running the game. e.g. Getting a birthday cake decorated with Gary’s Futurama likeness. Handing out prizes for working Gygax quotes into your character’s speech.

Hmm...the dungeons under Castle Blackmoor for Dave Arneson’s birthday? Some Traveller on Marc Miller’s? Munchkin on Steve Jackson’s?

ENnies bullet points

The ENnie Awards Home Page

  • I voted
  • Yay! Instant Run-off voting!
  • I cast very few votes because I wasn’t familiar with many of the products or companies on the ballot
  • How few people are there who actually can be familiar enough with all these products to be able to cast informed votes?
  • How many people are casting ill-informed votes?

20 July 2009

A good thing about “full page zoom”

I really didn’t see any need for web browsers to implement “full-page zoom”. Pretty much the only times I’ve wanted to zoom-in on a web page it has been because it used too small of font in too wide of a layout. Making the text larger while keeping everything else the same size was exactly what I wanted. Thankfully, Safari (at least) has keep text-only zoom as an option.

Today, though, I realized a use for “full-page zoom”: To make an overly wide web page narrow enough to fit in my browser window by zooming out.

Of course, I wouldn’t need either use of zooming if people did a better job of designing web sites. Yeah, and I realize my idea of “better” is different than some other people’s. But they’re wrong, and I’m right. (At least, here on my blog.) (^_^)

Now if I could only use “full-page” zoom-out and text-only zoom-in together!

06 July 2009

HTML 5 <video>

There’s some brouhaha over the decision that the HTML 5 standard (a work in progress) will not require browsers to support any specific codec(s) for the <video> tag. So...my 2¢...

Submarine patents: Really? You’re paying the licensing fees to implement the heavily patent encumbered H.264 codec, but you absolutely refuse to implement (or just take advantage of the open source code for) Ogg Theora because you’re afraid it may be discovered to infringe a patent? Despite the known patents covering H.264, isn’t it just as likely to be a victim of an as-yet-unknown submarine patent? It doesn’t look like the licensing future of H.264 is all that clear either. It’s hard for me to believe that Ogg Theora is any bigger a risk than anyone who has implemented H.264 has already assumed. I think Apple can weather any submarine patents better than Mozilla.

Quality: What does it matter whether Ogg Theora isn’t as good as H.264? Implementing Ogg Theora doesn’t prevent you from also providing H.264 as well. This is not an argument for opposing Ogg Theora being required by the standard or for refusing to implement it. Does iTunes refuse to play mp3 files because AAC are higher quality? Does Safari refuse to play mp3 files?

I don’t buy that HTML 5 should only codify what the browsers do. (Would there even be a <video> element to be debated if that were really the case?) A standard—backed by pressure from actual customers and implemented by competitors always looking for another bullet point—can and has convinced implementors to do things they wouldn’t otherwise.

That being said, I fully respect Ian Hickman’s decision as editor. It was a good decision, whether I might nitpick it or not.

And really, I haven’t been following HTML 5 as closely as I probably should be. Not to mention that, as interested (although that word seems entirely inappropriate) as I am in intellectual property law, I’m far from an expert on it. And my knowledge of video codecs is only having implemented some old codecs. (^_^)

05 July 2009

The game isn’t found in the rules

When I was a kid, I thought knowing the rules to a game meant you knew the game. At some point, though, you realize that that isn’t true. That’s why there are books on playing chess. At most the first chapter, if any, of the book covers the rules.

A game’s rules are like axioms from which the game emerges.

Role-playing games are weird in that role-playing isn’t governed by rules. So, the things presented as “role-playing game rules” cover things other than role-playing. Which makes them easy to misunderstand.

Looking just at the rules, any role-playing game tends to look like it is about combat and one or two other things. They tend to look like anemic wargames. There’s been a lot of effort to create rule systems that cover more than just combat and magic, to create a “real role-playing game” instead of just “hack & slash”. (I certainly spent a lot of time on that effort myself.) For me, however, most of them seem to actually make the game feel more like a wargame.

Yet when I read stories of early role-playing game sessions, when I hear my friends talk about their sessions with the older games, when I think back to my sessions with the older games; there was an awful lot of role-playing going on. As I’ve said before, nearly all the stories I’ve heard about The Keep on the Borderlands focus more on things that happened in the Keep than things that happened in the Caves of Chaos.

Actually, though, I think there are some rules useful for governing role-playing. I hear gamers mention them a lot, but I don’t see them written in the rule books much.

04 July 2009

iSight & RP350

Photo Booth records video mirrored. There’s an option to flip photos, but I haven’t found one for video.

Recording video through iMovie is not mirrored. When using the iSight, however, iMovie always gets the audio from the built-in mic.

Quicktime Player can also record video (although it requires Quicktime Pro), and it will honor the system settings for audio input. This way I could record unmirrored video with the iSight while capturing the audio directly from my Digitech RP350.

(I had to search, though, to find that Quicktime Player was saving the movies to my Desktop.)

Next experiment will be recording video, guitar via the RP350, and vocals via a USB mic, which will require creating an aggregate audio device with the Audio MIDI Setup app.

03 July 2009

Cowboys and Indians

In a comment to Grognardia’s post, “Ability Checks”, Rach wrote: “At what point then does D&D end and Cowboys and Indians begin?”

For me, it’s when all the participants choose one person to be the judge in order to resolve conflicts. Yes, it means that you have to trust that person. Yes, it means that they may make mistakes. But in exchange you get a game of infinite scope. Everything else is embellishment.

02 July 2009

Tone

Joe Satriani playing “Surfing with the Alien” on a random guitar through a Digitech RP200 and a Peavey Backstage 30:

Without his guitar, pedal-board, or amp, Satch still sounds like Satch. It’s often put this way: Tone is in the fingers.

What I want to rant about today (inspired by an episode of MusicRadar’s podcast) is the way that “tone is in the fingers” is too often used to dismiss questions about what gear a guitarist uses. Just because “tone is in the fingers”, that doesn’t mean that there isn’t value in knowing what gear somebody used for something. The question doesn’t automatically mean that the questioner is just looking to clone that person’s tone.

Here we have Eric Johnson playing through a Fender G-DEC amp:

Yes. EJ sounds like EJ even without his rig. Although, the point of this video is that the G-DEC allows him to practice things without his rig that were harder for him to practice without his rig before.

If gear didn’t matter at all, EJ wouldn’t bother with the rig he has. Satch wouldn’t have worked with Ibanez to create his JS series of guitars or Vox to create his line of pedals.

01 July 2009

Sage Advice

From Grognardia’s interview with Skip Williams:

6. For many years, you acted as “the Sage,” providing official answers to questions about the rules of D&D in the pages of Dragon, a role you continue to assume for Kobold Quarterly. I remember Gary once complaining that, in the early days, fans of D&D would call him at his home to ask him rules questions and he was baffled as to why anyone needed him to come up with answers, a feeling many early TSR staffers apparently shared. Do you see any contradiction between the desire of many fans for official answers to their questions and the belief of many early designers that players should come up with their own answers?

It’s a huge contradiction. The early designers were wrong. It comes down to this: If you want to be in control of your character, you have to have some idea how anything you might try is going to come out. and you can’t know that unless you have some idea of how the rules are going to handle the situation. If the GM is making capricious decisions about what happens in the game, you’re always shooting in the dark and you have no real control over your character at all. Think of how hard it would be to, say, learn to ride a bicycle if the laws of physics were constantly in flux. The game just works better if the DM and players have similar expectations about how the rules handle things.

To know how anything you might try is going to come out, you need to talk to the GM. The thing that sets role-playing games apart is that they have a living judge instead of lots of carefully worded rules. That’s why early D&D had such a minimal set of rules. That’s why the most interesting systems being created today have a minimal set of rules. That’s why Gary was so surprised by people calling him for answers.

(Yes, I realize that this is my own point-of-view. TINWWTP. YMMV.)

For every capricious GM, there’s (at least one) player who gets upset because they made too many assumptions and didn’t bother to actually communicate with the GM or the rest of the group. Instead of trying to fix the “problem GM” or “problem player” problems, we should just concentrate on fixing the “problem me” problem.

Having said all of that, though, I loved the “Sage Advice” column. (And in recent years I asked a number of questions of Gary too.) Firstly, If I buy a role-playing game, I want to understand what I read in it. One-way communication is almost guaranteed to have errors. Two-way communication allows for error detection and correction. Secondly, when I have a question about something, I often like to get other people’s opinion. Even better if I can get the opinion of someone more knowledgeable or experienced in the subject than I. Whether I end up deciding against the author’s original intention or the sage’s advice, it’s still valuable.

30 June 2009

Pre features I want on the iPhone

I like the way the Pre can have multiple apps “active” at once and quickly switch between them. It’s a pain when trying to do something on the iPhone that requires flipping between two or three apps.

I’m not crazy, however, about how such “active” applications on the Pre remain running in the background. To conserve processing and battery power, only the “frontmost” app should have the full app running.

The iPhone should allow third-party apps to do background processing. (Something I’ve changed my mind about.) With a good scheduler (the part of the operating system that decides what program gets processing time when), there’s no worry that the phone part of the iPhone won’t get every clock-cycle it needs. As long as the system limits the priority third-party apps can have.

Although, background processes shouldn’t be full apps. They should only be limited processes dedicated to a particular app task that can take advantage of being in the background. In fact, from what I’ve read, this is the case for the built-in iPhone apps. There are minimal little “iPod helper” and “Mail helper” background processes that take care of the background processing for those apps when they aren’t running. Also, giving developers services that they can leverage instead of writing their own background processes—like notifications—is something else I’d like to see. e.g. An app like Pandora ought to be able to leverage the existing iPod background process to play audio when other apps are running. (If that isn’t already available.)

Speaking of notifications, the Pre’s bottom-of-the-screen notification system looks like another good idea Apple should borrow.

29 June 2009

Role-playing game mechanics: To unify or not

The problem with unified mechanics is that everything feels the same. A lot of the fun in play for me comes—I think—from taking advantage of my character’s and my party’s strengths while minimizing the impact of their weaknesses. Which means there needs to be tradeoffs to be made. Brute force versus magic versus stealth. Strong fighting style versus agile fighting style versus ranged attacks. And so forth.

A subtext there is that a lot of games that tout their unified mechanic aren’t really all that unified. They still present tradeoffs. They just moved them about a bit. e.g. Despite arbitrarily unifying many (though far from all) things under the “roll d20, higher is better” regime, the d20 system ended up being a lot more complex than Expert D&D with it’s handful of different rolls.

The problem with “different things deserve different mechanics” is balance. It’s hard to well balance different mechanics. So, one set of tradeoffs often ends up too good against the others.

Like the way that two-weapon fighting rules in every edition of D&D that has had such rules have made it either too good to not choose or too weak to bother with.

28 June 2009

Palmtops

Daring Fireball Linked List: The Pre Is Palm’s Last Chance

The reason it’s important that the Pre succeeds is so the mobile market doesn’t wind up like the desktop market — with just one single great experience, alone in a sea of crap.

One of my friends said something about wanting his phone to just be a phone. The three of us with iPhones had pretty much the same response: The phone in the iPhone is almost incidental for us. The iPhone is our iPod, mobile Internet device, GameBoy, &c. I didn’t buy an iPhone to replace my old phone. I bought an iPhone to replace my Palm V. That it could also replace my phone was just icing.

When pundits talk about the iPhone (or the Pre) and the mobile phone market, they’re missing that to many—if not most—iPhone customers, it really isn’t in the same class as mobile phones. It’s a palmtop, not a mobile phone.

Though visual voice-mail is enough for me to also consider the iPhone a better phone than every other mobile phone I’ve ever used.

Palm did everything right with the Palm (née Pilot) that Apple got wrong with the Newton. The iPhone, however, is closer to where the Treo should have evolved to. Now, Palm has gotten the wake-up call and produced the Pre.

Which is great. I want to see these two companies continue to make each other better.

27 June 2009

Just credit where credit is due

So back in blog 2.0 I’d mentioned how the Wikipedia article on EVH said that he tuned his B-string to be just intonated against the G-string. This allowed him to play (some) major thirds with distortion without the dissonance even tempered major thirds cause.

Well, it seems that open-G players (like Keef and his inspirators) have long used this trick. In fact, it seems like it’d work better in open-G than in standard tuning.

26 June 2009

Why Keef misses the Beatles

From Keith Richards comes clean on distortion and the meaning of music:

I wish the Beatles were still around in a way, because they could have kept on doing what they always did first for us, which was open the doors and take the brunt. (Laughs)

Lots of good stuff in this interview with “Keef”, but I thought this particular line was pretty funny.

25 June 2009

Free Dragon Warriors Introductory Book

Magnum Opus Press has a free Introductory Book for their Dragon Warriors role-playing game available through DriveThruRPG.com. It looks like it will serve as a decent “player’s book”.

22 June 2009

Digital guitarist: Amp edition

Having decided that I’m a digital guitarist, it’s seems like it would be nice to get a combo amp that had the digital modeling and effects built-in. Yet, the footcontrollers for a Line 6 Spider III or the a Peavey Vypyr or a Fender G-DEC 30 or what-have-you are at least as big—some bigger—than my Digitech RP350. Whether the digital processing lives in the amp or the footcontroller doesn’t really have an impact on what I have to carry and set up.

The RP350 is actually more flexible because, if there’s a PA available, I don’t have to take an amp at all. The RP350 can also drive two amps (in stereo) as monitors while simultaneously sending balanced, line-out signals to the house.

So, again, I’m validating my choice.

My little Crate 15W 1×12 has served well with the RP350. Plenty loud enough for small venues and a decent monitor when plugging the RP350 into a house PA. (In one case the sound tech insisted on micing the Crate instead of taking the direct outs from the RP350.) I’ve been thinking of getting a second one so that I can run them in stereo.

I’m wondering, though, if I should get a keyboard amp. Would that do more justice to the RP350’s sounds than the Crate? They also typically a mic channel and sometimes additional channels as well, which could be handy. I’d considered that when I got the RP350, but the Crate was cheap, and I just needed an ad hoc solution.

21 June 2009

AT&T

While I’m sure MMS will be nice, to me, it seems kind of redundant on my iPhone. I don’t have a laptop, so I have no need for tethering.

While I have had a couple of problems with U-verse, calling support got me to helpful people, and things were cleared up in fairly short order.

A week after getting U-verse, the set-top boxes were automatically updated with software that allowed watching DVR recordings from the other boxes. Recently, there’s been another update, as my non-DVR box can now erase and do other DVR operations that previously could only be done at the DVR box. The web voice-mail interface has had a facelift recently, and the web DVR interface has been upgraded as well.

Perhaps Apple’s current practice of providing continual improvements has rubbed off a little.

In short, I’m actually rather happy with AT&T.

20 June 2009

The Vypyr chart

I love the chart on Peavey’s page for their Vypyr series of guitar amplifiers. There are, however, two problems with it.

1. It only covers the Vypyr series. Go to their Guitar Amps & Cabs page and good luck trying to figure out which series you might be interested in. While a single chart like the Vypyr one covering all their amps might be impractical, a similar chart to help you figure out what series might fit your needs would help.

This is a big fail for just about every guitar amp manufacturer’s web site. Even when they have little descriptions about each of their lines, those descriptions are usually no help in figuring out which ones to investigate further. I end up digging through the specs of each amp with a second browser tab open to Sweetwater or Musician’s Friend to check prices.

2. There isn’t a check for USB on the Vypyr 30. There’s a few other choices in there that seem odd to me. Wouldn’t the PowerSponge be more useful on the 60 and 120 with their tube power amps?

19 June 2009

iTunes gripe

I really hate that I can’t access my iPhone settings in iTunes unless my iPhone is connected to my computer.

18 June 2009

iPhone 3.0 Auto-Authentication with AT&T Wi-Fi

I typically don’t bother with free wi-fi hotspots. Why? Because they almost all require you to pull up a browser and jump through some hoops. Of course, if the network activity you are trying to do is not visiting a web site—like checking your e-mail—you’ll sit there wondering why the free wi-fi seems to be slower than the Edge network.

Even if you think to pull up Safari and jump through the hoops first, the whole process is still probably slower than having just checked your e-mail over the Edge.

Well, it seems that with the iPhone 3.0 firmware, AT&T has fixed that for their wi-fi hotspots—which are free for AT&T customers.

Digital guitar

I get so annoyed by the demos I see of amps or pedals that show the versatility you can get by twiddling several knobs. I don’t want to have to twiddle a bunch of knobs between songs to get the tone appropriate to each. Often, I want two (or more) different tones within each song when I can’t stop to twiddle knobs. Versatility doesn’t mean a lot if you have to carefully adjust several parameters to access it.

Sure, stomp boxes have the hammer of a bypass switch. Again, that doesn’t really let you access it’s versatility. It means you get one of it’s settings or none. And multiple stomp boxes means multiple stomps to make some changes.

High-end amps have multiple channels and various foot-switchable features. If you want an affordable amp that isn’t overpowered, though, they’re usually hobbled by a lack of foot-switches, a tiny speaker, and no effects loop.

So, I’m coming to terms with the fact that—when it comes to electric guitar—I’m a digital guy. More and more I’m convinced that back (1992?) when I got my Digitech DSP-21, I made exactly the right decision for me. A digital effects unit plugged into a PA or clean amp (or both).

I spent an afternoon at Danny Ray’s trying a bunch of tube amps, and I honestly enjoy my Digitech RP350 into my Crate GTD15R more than any of them. I think I may actually like the sound of a digital model of an amp than the amp itself.

P.S. I think another piece of the puzzle is that I’m not interested in developing a signature sound. I want a broad palette.

17 June 2009

D+ v. D+

One thing I forgot to mention about HackMaster Basic: It uses (at least for combat) 1d20 + modifiers versus 1d20 + modifiers.

(If any non-game-geeks want to try to follow this, that means: The player of the attacker rolls a die—which happens to be twenty-sided instead of your standard cubic dice—and adds whatever modifiers his character is entitled to. The player of the defender does likewise. The higher total of die plus modifiers “wins”. You may have read that there is no winning in role-playing games. This is—generally—true. There are no game ending victory conditions. There are, however, minor victories along the way.)

From a design point-of-view, I love this. In actual play...not so much, and I can’t make a convincing argument for why this is so. Likely it stems—at least in part—from two of my peculiar weaknesses:

  • Remembering details
  • Mental arithmetic

When running the Lord of the Rings campaign, I often found myself doing this dance:

  1. Roll for the NPC
  2. Add the NPC’s modifiers
  3. Ask the player for their total
  4. Having completely forgotten the total for the NPC I had just calculated, calculate it again
  5. If I’m lucky, those numbers haven’t forced the player’s total from my mind...

And—of course—Decipher’s Coda system using 2d6 (your standard pair of two cubic dice) rather than a single die just added one more obstacle for my arithmetic-challenged brain.

16 June 2009

HackMaster Basic

So, a post by Jeff sent me straight to the Kenzer web site to check on the progress of HackMaster Basic.

It’s being released at the end of this month, it’s $20, and less than 200 pages. It also has a cool Erol Otus cover. They’ve got a “walk through” PDF. The first page (p. 37—it’s an except from Knights of the Dinner Table #152) of which sets the scene pretty well, I think.

Aside: The old HackMaster was AD&D expanded. Since realizing that I prefered “Expert” D&D to “Advanced”, that pretty well dampened by interest in HackMaster...except as a source for looting ideas from. (Ironically, I thought Munchkin d20 was a better game whilst HackMaster was a better joke. In practice, though, I’m not sure anyone ever played Munchkin d20 whilst HackMaster has gotten a lot of play.) The license that allowed Kenzer to build HackMaster upon AD&D, however, is no more; so they’re having to build a new HackMaster.

Under 200 pages and $20 sounds awfully good to me. I’m seeing half that looks close to my current ideas of RPG design and half that seems better than tolerable. Maybe a better halfway point between the old Expert D&D and d20 System D&D than I’ve seen so far?

I definitely expect there to be things to loot for incorporation into other D&Desque games.

31 May 2009

Why?

Alton Brown; I’m just here for the food, version 2.0; p. 7

I know there are those who would say “who cares? As long as I know how, why bother with why?” I can only offer that for me, until I deal with the why, I don’t really know the how...if you know what I mean.

Yes, Alton. I know exactly what you mean.

22 May 2009

Blogger RSS feeds by label

Turns out that Blogger can generate an RSS feed for a label. This means that—e.g.—those of you only interested in my gaming related posts, e.g., could subscribe to this feed and only see those. (Provided I remember to tag them.)

Discovered in Blogger Buzz: Thanks for the feedback so far!

21 May 2009

Lost cheats

Yeah, I’m trying to flush out some of my blog drafts. This one was started last week after the season finale.

The victory for a mystery writer is when, during the big reveal, I say, “Of course! I should’ve known!” The trick is to make me feel like I had enough information to know then secret when I didn’t. If I figure it out before the big reveal, it’s a let down. If I feel like I couldn’t have figured it out, then I feel cheated.

Lost does the latter.

My accusation, however, is unfair on two accounts. First, it isn’t over. There’s still the chance that—when it is over—I’ll say, “Of course! I should’ve known!”

Second, I don’t think Lost is meant to be a mystery. At least, not a conventional one. So, I try to take it as such, but I think this is why I’m always a little dissatisfied by it.

The new command line

Coding Horror had an article called: The Web Browser Address Bar is the New Command Line

I once developed the “perfect” search GUI. It had all the power and flexibility you’d want, and it was all visible.

My boss and mentor said even he found it intimidating. Intimidating the user was not what I was going for.

So, I went about applying progressive disclosure. The power wouldn’t hit you all at once, but would be made visible in little pieces. I hoped in a natural way that wouldn’t prevent people from finding the power when they needed it.

(Aside: Progressive disclosure is in direct conflict with visibility. Too many times these days visibility is being sacrificed. Users either don’t know about a feature or get frustrated trying to find it. Progressive disclosure is a good tool, but it needs to be used carefully.)

My boss’s answer? The same one Google would come up with. A simple field and search button backed by an engine that would just return the answer the user wanted without the user having to figure out how to properly form the query. No GUI for forming the query. No special syntax for forming the query. Just a box and a button (and a smart engine). He was right.

I loved a to-do list application I used that had a simple text field for deadline. I could type “today”, “tomorrow”, “Friday”, or any number of other simple and direct ways of expressing it and the application would figure out the appropriate date. I was disappointed when the “upgraded” it to a fancy calendar control.

Something similar came up at work recently: Do we give the user a multi-select box full of choices or just a text field to list choices separated by commas? In this case, the text field really was the better choice.

I started this post before I’d seen it, but I am now reminded of Guy Kawasaki’s interview with the author of In Pursuit of Elegance: Why the Best Ideas Have Something Missing.

Arm-chair marketing: Rabbit?

It doesn’t really seem very useful, but for some reason, I want to like Nabaztag, the multipurpose Internet-connected Rabbit. Functionality aside, though, here’s my arm-chair marketing...

1. The name Nabaztag strikes me as the kind of name that is only going to be successful if your product is incredibly compelling.

2. The tag line Rabbit? Calling it a “rabbit” isn’t bad, but “multipurpose Internet-connected Rabbit” isn’t any more informative than the name. Just about any other word that would describe this thing would be better in place of “rabbit”.

More on M.I.T. 6.001

See the previous post

My follow-up question that I meant to post: Assuming Sussman’s opinion is true, is this a practical assessment of an unfortunately reality? Or is the the natural evolution of software engineering?

Dan Weinreb has weighed in on the subject.

I absolutely agree with Dan’s point that the language is somewhat beside the point.

After reading his post, my question is: Should a university be teaching students things they will encounter in the field or things that they won’t encounter in the field?

My perspective on this has changed a lot between the time I entered college and now—after having dropped out and worked as a programmer for 15 years.

(I suspect M.I.T.’s answer may be: Both! This one course shouldn’t be used to characterize the entire program.)

10 May 2009

Star Trek

They do the kinds of things that I wish prequels wouldn’t do. They do the thing that I wish franchise reboots wouldn’t do. As the trailers showed, they have today’s kind of over-the-top action that seemed at odds with the spirit of the original series. Oh, and did I mention that Trek had more than used up their time-travel allowance?

It’s unsurprising that I have criticisms. What’s surprising is that...they really feel like trivia. It’s a really good movie, and it feels like it really honors the original Trek and what it was about. The characters are all made more without going too far.

Well, that’s my first impression. I remember saying Episode I was “really good” the day I saw it. So, I won’t try to answer the big question. Mr. Abrams has scored a victory, though, simply because people are seriously comparing his film to Khan.

08 May 2009

Wired’s GeekDad on the new Star Trek movie

10 Things Parents Should Know Before Seeing The New Star Trek

My favorite bits:

8. Do I need to sit through the credits for some sort of bonus movie at the end?

This should’ve been question number 1, not 8. The answer was “no”.

It’s a space action flick, so it’s fairly loud throughout. The space battles are loud [...]

Ha ha ha ha ha ha

06 May 2009

Kindle DX

Jeff Bezos wrote:

A strange thing happened on the way to the paperless society. We humans created more paper than ever before. Computer printers (and their evil companion, the ink-toner cartridge) have proliferated, and most of us routinely print out and lug around loads of personal and professional documents. Why? It’s not that buying printers or changing ink-toner cartridges is fun. It’s because reading on paper is better than reading on traditional computer displays. Printing has been worth the hassle.

(It’s currently on the Amazon home page, but I didn’t see a permanent link.)

Reading on paper is better than reading on traditional computer displays? There was a time when that was certainly true, but it hasn’t been true in a long time.

Why do I print things out? There are a lot of factors, of course, but here are currently the primary ones.

Area: I can spread four sheets of paper out on my desk. Buying a display or multiple displays that can show as much at one time is expensive.

Flipping through papers is often easier than managing windows.

I do have a portable screen, but it has less area and flipping between documents on it can be more overhead than managing windows.

These are all trade-offs. The point is not that paper has a clear advantage for any of them. The point is that paper still has enough of an advantage enough of the time to make printing worth the hassle.

The Kindle DX does add another variable to the mix: A portable display with a larger area and different characteristics. It doesn’t, however, fundamentally change the equation.

Having said that, I’ve been wanting something the size of the Kindle DX for a long time. There’s a reason you can buy—e.g.—paper notebooks in pocket, digest, and letter sizes. I think there are roles for devices in similar sizes.

22 April 2009

Best tweet ever

Adam Savage (a.k.a. @donttrythis) wrote:

I met a girl (my first kiss) playing D&D while in the employ of Warner Library, in Tarrytown. I was the Dungeonmaster.

11 April 2009

The extraordinary among the ordinary

So, I’m listening to Grimm Studios Podcast episode 1 and the subject comes up about whether a hero is an extraordinary person or an ordinary person in extraordinary circumstances.

(I think both. I think it’s also interesting to note, however, that when the hero is extraordinary, the challenges faced are often so much more extraordinary that the hero’s extraordinariness† is immaterial.)

It occurs to me that this might be why I’m not crazy about things like The Watchmen. In some ways they are about extraordinary persons in ordinary circumstances. I can appreciate that sort of thing but only so much.

Which is not to say that I didn’t enjoy The Watchmen‡. I did. It’s just never going to be on my list of favorites.

†Wow. This derivative of extraordinary—as awkward as it is—is actually explicitly listed in the Mac’s New Oxford American Dictionary.

‡Not the movie. The comic. Although I haven’t actually so much read the comic as watched the “motion comic”.

Surfing with the Alien

I’m really bad at keeping up with music. I’ve been making an effort to regularly buy albums, but it hasn’t really helped since I seem to mostly be buying digital version of my old cassette tape collection.

One such is Joe “Satch” Satriani’s 1987 Surfing with the Alien. Of course, I didn’t know when I bought the CD at Half Price Books last June that in 2007 he’d released an expanded 20th anniversary edition.

As I recall, Joe came to fame as a former guitar teacher of Steve Vai’s after Steve had come to fame playing with David Lee Roth when Diamond Dave left Van Halen. Of course, “fame” here means that if you’re a guitar player you have probably heard of them.

Here’s my two degrees of separation: One of my guitar teachers, Danny Blitz, once jammed with Joe. During that time when Joe was known only as “Steve Vai’s guitar teacher”.

Joe has built an impressive career on electric guitar instrumentals. He’s only recently joined a “regular band”, Chickenfoot.

Anyway, back to 1987: Alien, Joe’s second album, reached 29 on The Billboard 200 at a time when rock instrumentals hadn’t charted in years or were heard on the radio much.

There’s no doubt that Joe has mad guitar skillz, but the things I love about this album aren’t so much the flashy tricks. “Always with me, always with you” is a melodic ballad in which the few bursts of shredding or whammy bar squeals or right-hand tapping are used only in service to the song. That’s probably my favorite track. “Midnight” explores two-handed tapping but not for flash. Overall, besides the flashy, rocking title track and “Satch Boogie” hits, there’s just a really nice mix of pieces here that cover a lot of territory.

09 April 2009

Journey to the City of the Gods

There may be as many opinions on the various roles and contributions of Gary Gygax and Dave Arneson to the creation of Dungeons & Dragons as there are people who recognize those names. By all accounts, though, they were both interesting, imperfect, and genuinely nice characters. And also very different.

The hobby they created has given me fun, but it also gave me an impetus to study history and probability. It introduced me to literature I might never have read otherwise. And it helped me find and have an excuse to hang out with some of the best friends I’ve ever had.

Though I never met either of them, Gary’s passing last year and Dave’s now have both felt a bit like losing a mentor.

In honor of Dave and Gary, I’ve pulled out Oearth Journal #6 to read “Robilar Remembers: Journey to the City of the Gods”. It is Rob Kuntz’s account of a session in which his character Robilar and Gary’s Mordenkainen explore Blackmoor’s famed “City of the Gods”. It includes some Dungeon Masters Comments from Dave as well.

08 April 2009

D&D’s death spiral

On the business of role-playing games...

Ryan Dancey made a comment on a post at RPGpundit’s blog. I found it interesting enough that I’m quoting the whole thing below.

One of the reasons I find Ryan’s opinion interesting is because he’s a former Wizards of the Coast Vice President.

(I saw this due to Randall posting about it on the RetroRoleplaying blog.)

This is a classic example of Death Spiral. As things go bad, the regressive forces inside the organization (lawyers, commissioned sales people, creative folk who feel stifled by history, precariously tenured executives) are increasingly able to exert their agenda. It always makes a bad situation worse, but there’s no magic bullet that would likely make the bad situation better so you get a rapid unbalance in the Corporate Force towards the Dark Side.

OGL?
Risky (someone might make us look bad, steal our ideas before we print them, or create a competitive brand that siphons off sales), and lack of faith in network marketing devalues ROI assumptions. Kill it.
PDF?
Causes endless problems with hardcopy partners creating pressure on sales team they could really do without, and revenues are so small as to be non-strategic. Cut it.
Online?
Every time you talk about it someone produces a $10 million minimum cost estimate to “do it right”. After spending 3–5× this amount in a series of failed initiatives (lead by utterly unqualified people), executives assume Online is plutonium. No qualified lead or team will touch it.
Evergreen?
Sales of each unit are going down and few products have any staying power. The only (seemingly viable) solution is to put more books in production—make up for the revenue hole caused by lack of evergreen sales by getting more money out of each customer. The Treadmill.

The next things that will take hits are the RPGA (costs a lot to operate—slash its budget), then quality (put fewer words and less art on fewer pages and raise the price), then consistency (rules varients generated by inexperienced designers and/or overworked developers start to spawn and cohesion in rulings breaks down leading to ad hoc interpretations as the de facto way to play).

Meanwhile sales just keep going down, the gap in the budget keeps getting bigger, and no matter how many heads roll, there isn’t any light at the end of the tunnel.

Wizards is about to be forced into the D&D end-game which is something that many publishers have gone through but none ever with a game the scale and impact of D&D (TSR walked right up to this cliff but WotC saved them from going over the edge). There are 3 outcomes:

  1. A total collapse, and the game ceases meaningful publication and distribution at least for one gamer generation and maybe forever.
  2. Downsizing until overhead matches income; could involve some kind of out-license or spin off of the business—think BattleTech in its current incarnation.
  3. Traumatic rebirth, meaning that someone, somewhere finds some way to cut out the cancers that are eating the tabletop game and restarts the mass market business for D&D.

Note that 2 and 3 can be mileposts on the road to 1.