Some pun on Specter

A good analysis of what Arlen Specter’s defection means for the Republicans:

In brief: Bad things.  So far the Republicans have reacted to Obama by elbowing each other to rush rightward, embracing ever more closely the policies that got them tossed out in November.   

There’s a new GOP waiting in the wings, based on people like Meghan McCain.  But it won’t get a chance to revitalize the party till the old guard dies off.

The design department

I thought I’d write about the design process at SPSS, since it seems to be somewhat unusual in software shops.

Generally, as Alan Cooper has lamented, programmers design the products.  At SPSS there was a separate department responsible for design.  “Design” here means functionality plus UI.  They would write design documents specifying every screen and dialog, every error message, every command and what they did, every statistical procedure and how it worked.  (As preparation for this, they would decide on the functionality required, talk to users, and check out the competition.)

These would be reviewed in meetings, normally attended by all the stakeholders: sales, marketing, development, statistics, QA, documentation, tech support.  The designer led the meeting, and the best ones were good at keeping the meeting on track.  Meetings lasted no more than two hours (after that, people get bliffy); it it took longer another one was scheduled.

Anyone could criticize the design, and did.  However, there was a rule that the meeting shouldn’t fix designs, the designers should.  After an issue was raised the designers would go back and rework that part of the design.  Trying to design a feature in a meeting produces endless discussion and wastes most attendees’ time.

Most of the designers were smart and of course were experts in the product line, and the process normally worked well.  The weak spot was if anyone wasn’t really paying attention– people who hadn’t read the document ahead of time, or had little to say, or for whatever reason hadn’t bought into the product.  On the other hand, they didn’t have much of a leg to stand on if they didn’t like the product once it came out.

The designer continued to work closely with the development team, keeping the design up to date, helping to solve problems as they came up, doing usability tests, and participating in bug triage sessions.

Why would you do this?  Well, there are several advantages.

  • It’s a huge benefit to QA and doc writers, who know what the product is supposed to do long before they get any releases.
  • Designers can make sure different products are consistent, and as specialists they can produce better, easier UIs than programmers (who like arcane incantations). 
  • It formalizes the functionality– which helps keep your manager or the CEO from rushing in a month before ship and trying to slip in a new feature.
  • A good design document won’t just say what the program does, but why.   This helps avoid mistakes later, and educates everyone about what the product means to the end user. 

Does it add time to the development process?  It does take time, though the bulk of the work can be done while the dev team is finishing the last release, and designless products (as Frederick Brooks explained decades ago) end up late anyway.

For a tiny software shop, it may seem like a luxury– though I worked on a product at SPSS for years that had 4 to 6 programmers, and there was enough design work to have a full time designer. 

A much larger firm may have a much more elaborate design process; an advantage of the SPSS system is that it’s really not that complex.  The essential deliverable was a single design document; sometime there’d be a functional spec first.  When we had time, the developers would produce a internal design doc as well.  No one was drowning in paper.

My First Dictionary, a blog by Ross Horsley:

By Ross Horsley
By Ross Horsley

I’m guessing the illustrations are from ’50s children’s books; if not they are artful re-creations.  Very reminiscent of the DFC.

Technocrats vs. teabaggers

I see I haven’t written about politics since January.  This isn’t because there hasn’t been any, but because the main issues are technocratic.  We’re in a huge economic meltdown and only blowhards are sure that they know how to get out of it.  There are debates among the grown-ups on how much stimulus we need, how to deal with the failing banks and insurers and auto makers, whether to nationalize or just buy up toxic assets, but I’m certainly in no position to offer good advice.  Solving the Israel-Palestine problem, sure, any pundit can do that, but ending this kind of recession, where major industries have tanked and monetary policy has run out of juice, is tricky.

Meanwhile, the Republicans are trying to see what new lows of hypocrisy and irrelevance they can plumb.  The party that trashed Clinton’s surpluses, that increased the size and scope of government, that spent a trillion dollars on war and another trillion on bailouts, that told us deficits don’t matter, now wants to be seen as the voice of fiscal responsibility?  That would be hard  to swallow in ordinary times, but it’s completely out of touch in a deep recession.  Republicans aren’t participating in the debate because they’re not even able to face the problem.  They want to blame government and taxes because that’s the only problem they know (well, that and culture wars, but even they know that that’s not going to fly right now).

Possibly not everyone reads Krugman obsessively, so I should clarify.  An ordinary recession can be fought by lowering interest rates: that makes it easier for businesses to get loans and invest (and for the rest of us to buy houses and go on credit spending sprees).  That doesn’t work in the present situation, because the federal funds rate is about as low as it can go.

A recession isn’t a moral problem; it’s a technical one: businesses and consumers have both cut back, and underconfidence becomes a vicious circle: firms don’t invest or hire because sales are low; this leads to layoffs which reduce consumer spending, so sales get lower, etc., etc. Consie talking points like letting industries go bankrupt and increasing savings and lessening government spending are precisely what we don’t need: we need to increase production, not lower it.   The GDP gap looms: the difference between what the economy is providing and what it can provide; currently it’s about 8% of GDP.  The stimulus bill is about 3% of GDP, which is why Krugman worries that it’s too small.

So, is there any hope for the GOP?  Not right now; as party chairman Michael Steele discovered, the loonies are in charge and they’re not budging despite losing two elections in a row and facing a president with a 63% approval rating.  The name-calling seems more desperate than ever (Obama is no more a “socialist” than he is a Muslim) and as for talk of secession— please, go ahead.  Now there’s a winning strategy for the GOP: throw away Texas’s 34 electoral votes!


I finished Dreamfall, by Ragnar Tørnquist, today. It is 12.7 hours long and I recommend it to all my classmates.

Pluses: It’s visually spectacular, well acted, and well written. It’s an adventure game (see below), and those are among my most memorable gaming experiences.  There should be more games like this: beautiful and ambitious.

Geeks like Zoë, Zoë likes geeks
Geeks like Zoë, Zoë likes geeks

I’m a graphics snob, I’m afraid, and early games (of the vintage of Half-Life or Morrowind) are really unattractive to me.  Dreamfall is good in this respect, but not top-notch; the designers seem to have had trouble with arms, and the fervently acted dialogs are a little weakened by animations that only move the eyebrows and mouth.   On the other hand, Zoë is cute and it’s fun to watch her ponytail bob around as she moves.

As many people have noted, the combat system is kind of dumb.  It’s just tricky enough that I’d frequently lose fights, but not used enough that you get much practice.  Others seem to dislike the sneaking, but I didn’t mind that.  The camera controls are wonky, though.  So far as  I can see you can’t pan up or down, which occasionally makes puzzles more difficult.

Spoilers ahead, so take whatever precautions you normally take under such circumstances.

The story kind of frustrates me.  It seems to me that Tørnquist didn’t let his character arcs talk to his plot.  His idea seems to be that April Ryan has fallen into despair after saving the world in the previous game (which I haven’t played).  That’s a great idea, except that in terms of actual action she’s a key resistance fighter– a hero.  There’s an odd scene where her superior alternately thanks and denigrates her.  The game makes a big deal out of her not helping Zoë… only she does, at considerable personal risk.  Perhaps she could have done more, but no one bothers to explain what.   (Her final scene is also frustrating… she’s at the end of a pier; why didn’t she just jump in the water?  It’s not like she was held at gunpoint.)

Similarly, there’s a huge push to “save April Ryan”.  The White Dragon sends Zoë to the key location at the right time.  Only she doesn’t do a thing there (except perhaps fatally delay the escape of a couple of fighters). 

The last scenes with Zoë are unsatisfying as well.  They wrap up one story (that of Faith, your standard creepy little girl); but 90% of the actual game has been about other characters and machinations.  Some of those are left hanging or even complicated more at the last minute.  I guess it’s part of the territory that your MacGuffins may end up being inconsequential, but the game is trying to tell several stories at once and the balance seems off.  Perhaps we’ll just have to wait for Dreamfall Chapters, the eventual sequel.

While we’re at it, it’s rather strange that video game characters are so blasé about sending the player character into possibly fatal situations.  In Dreamfall, Damien (the computer geek in the picture above) sends Zoë on a mission that, objectively, would be likely to kill her.  It’s as if he knows that she can just respawn.  Even in Half-life 2, Alex sends Gordon Freeman on frankly suicidal missions– e.g. through Ravenholm.  He’s good, but that’s a lot of confidence to have in anyone.  At least in Fallout 3 the NPCs seem to have a reasonable attitude: the Vault Dweller is an adventurer who puts her life on the line for a few bottle caps… they’re not forcing the quest on her.

One more cavil: it kind of feels like the developers ran out of game about an hour before the end.  After a point, it’s all cutscenes.  That’s probably why some critics felt like it should have been a movie instead.   I wouldn’t go that far, but again I think the balance was a little off.  At the least it would have been nice to have some dialog choices.

Roll, baby, roll

Not a few L4D games end up with one side rolling the other, and I’ve been puzzling over this.

Bad day for the survivors
Bad day for the survivors

It can happen in TF2 too, though not as often, and generally with less unhappiness, as a TF2 game only lasts 15 minutes or so.  L4D can last an hour or more.  Some of my friends hate versus mode because of the possibility of rolls

Most of my observations so far are negative.  I can’t predict when a team is going to roll or not.  I’ve been on teams with fantastic players and got rolled, and on teams with newbies and sailed to victory.  The same player can be really hot one evening and a bust the next.  It’s also not a matter of communication, as you might think: I’ve been on teams that are planning all the time, but fail anyway, as well as teams where everyone does their own thing and it works

It’s partly the game design, maybe.  Basically, a single mistake– getting a little ahead or behind your teammates, not noticing that smoker, getting a surprise tank– can be devastating.  (And on the Infected side, you have to have great timing and great location, so it’s easy to miss an opportunity

A lot of it is psychological, I think.  I see teams that have lost a round or two getting frankly depressed.  They start complaining about the game or their luck, and seem to play worse.  When you’re on a winning team, by contrast, it’s a kind of high.  You feel alert and gleeful, and you have hustle– you don’t relax, but keep hitting on the survivors / running for the saferoom

Occasionally, of course, a roll can be reversed, which is even more satisfying (and mysterious).  Sometimes I think the first round shouldn’t affect the score… the teams are just getting used to each other, and very often they play much better in subsequent rounds.

Games, stories, story games

I’m playing Dreamfall right now, and found this very interesting interview with the creator, as well as a great discussion in the comments section on how much interactivity a game should support.

Ragnar Tørnquist On Dreamfall

Apparently many people find Dreamfall to be an engaging story and not a very good game.  It’s true that it has a wonky camera and an unsatisfying combat mechanism, but the main complaint is that it’s so linear— there are few alternative paths and the puzzles are usually rather easy.

Why am I in a wintry landscape in my underwear?
Why am I in a wintry landscape in my underwear?

I don’t agree, though I see the point.  On the whole I think there’s just enough interactivity, and I think this sort of game is a valid alternative to more open-ended games like Fallout 3 (to say nothing of plotless ones like TF2).  It’s the same sort of thing as Grim Fandango or Sam & Max (old or new incarnations), which are great games.  Sometimes it’s a little too artificial (e.g. at one point you can only advance the story by picking up your backpack), but all games have uninspired moments. I love open-ended games, but in some games you’re playing a character (Sam or Manny or Zoë), not playing yourself.

The page also has some discussion on writing and playing male and female characters, interesting but not very deep.  I like to play female characters myself, and have my own theories about male and female brains and those in between, but I don’t think any of it should be taken too seriously.  When you invite people to talk about “men” and “women”, that focusses people on certain things and subtly distorts the discussion… people (including me) trot out their notions and prejudices about the prototypical male or female, which may not have much to tell us about any specific person, real or imagined.

Note to advertisers

Re: Ads that take over the window or otherwise hide the page I’m reading.

Doesn’t work.  Dudes, it’s 2009.  I already have an attention span measured in seconds.  The moment I see one of those things, I click on another window, or hit the close box if any.  Did you follow that?  I don’t watch the ad.

Microsoft modulo 2

Microsoft has a very strange pattern of alternately creating great and horrible things for programmers.  The Windows SDK was difficult; MFC was great; COM was a nightmare; C# is a dream; LINQ has gone back to the Dark Side.

Here’s my first working code, which took forever and probably could be done much better… with two books plus the web as reference, it was hard to do even this much.

SqlConnection conn = new SqlConnection(
   @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\TestDb.mdf;Integrated Security=True;User Instance=True");
SqlCommand comm = new SqlCommand("SELECT * FROM People", conn);
SqlDataAdapter adapter = new SqlDataAdapter(comm);
DataSet ds = new DataSet();

var results = from t in ds.Tables[0].AsEnumerable()
                          where !t.IsNull("Level")
                                && t.Field("Level") > 6
                          select t;
foreach (DataRow row in results) {
     this.ResultsLabel.Text +=
                    string.Format("{0}: {1}\n",
                    row["PersonID"], row["Name"]);

Ugh.  I appreciate the idea of adding SQL support directly to the language, but this really doesn’t seem easier than, say, using SQL, something we’ve been able to do for years.  Compare the equivalent SQL query, in fact:

SELECT PersonID, Name FROM People

Microsoft has gone to a whole lot of work to make something that kind of looks like SQL but isn’t. The compiler is much smarter in some ways (e.g. it will figure out many data types from context) but not enough– it seems entirely arbitrary what objects can be used in a LINQ query and which can’t. It’s particularly annoying since Visual Studio is smart enough to make it easy to create a database for you, and it will create some accessor objects for you… and then I have to mess around with connection strings and string column names in the code.  (Come to think of it, I’m making an actual SQL query in order to make a fake SQL query.  Why is this a good thing?)

I’ll get better at this soon; I’m just picking it up, so I’m in the ranting stage. But I wish the Light Side had been allowed to work on this. So far it looks like what Joel calls “Fire and motion“: Microsoft messing with things in hopes that they can move forward while everyone else is forced to catch up. If they’d made database queries easier, that would be cool, but so far I’d rather write the SQL.

4 of 4, baybee

Finally got this tonight.


Thanks to everyone I’ve played expert with, most often Snipe, Skibbles, joni, Cake, Faux, and flatluigi.