Review: It's A Wonderful Life: A Live Radio Play

Share:        

The family and I went to see “It’s A Wonderful Life: A Live Radio Play” at Gaslight Theater today.

I’m one of those rare people that hasn’t seen the film, so my exposure to this story is solely through this production. Being a live radio play, the actors were playing actors performing the story live over the radio.

I enjoyed the voices the actors used to differentiate the characters. Randy Diamon as Clarence and Mr. Martini was particularly memorable. Josh Fisher gave a solid and moving performance as George Bailey. Fiona Turnbull (Violet) and Debbie Minter (Mary) were wonderful as well. Barry Allord’s delivery (Mr. Potter) was oddly slow the first time I saw it, but he gave a better performance today.

Sound effects were provided live as well. Both performances I saw featured Val Durfee as the foley artist, who performed her job with style and aplomb. (Davita Terrell is also performing the role for some of the shows.)

The actors also have interesting interaction when they are not delivering lines, which gives the whole production a charming verisimilitude – no doubt a credit to Jane Allard, the director. The on-air commercials for Bremel Shaving Cream and Dux Toilet Cake, the “sponsors” of the show, are not to be missed!

From friends who have seen both the movie and the play, “It’s A Wonderful Life: A Live Radio Play” is a wonderful way to enjoy an old classic and support live theater. As an added bonus, there is an art cooperative who’s running a holiday gift shop in the adjoining space, in case you are looking for a unique gift.


Zendo and the Art of Software Development

Share:        

A Zendo game in progress

There is a Looney Labs game called Zendo. Using pieces called Treehouse Pieces and some Pente stones, Kory Heath has created a most challenging game.

One person is the Master, and two or more other players are students trying to guess the koan (puzzle). To begin, the Master decides on a secret rule and creates two puzzles: one that follows the rule (marked with a white stone), and one that doesn’t (marked with a black stone). Students take turns making puzzles, after which they can either say “Master” and have the Master score the puzzle (mark it with a black or white stone as appropriate), or they can say “Mondo”, in which all the students guess whether the puzzle follows the rule. Students that guess correctly get a guessing stone. To win, you must be the first student to correctly guess the puzzle, and a guess costs a guessing stone. If you guess incorrectly, the Master must prove the guess wrong by creating a puzzle that contradicts the guess. In this way, each turn gives a little more information about the nature of the secret rule.

Unlike most other strategy game out there, this is a game of inductive logic. Deductive logic involves taking information and narrowing in on a solution; inductive logic is the reverse, taking small pieces of information and extrapolating a general rule.

I can’t give a comprehensive list of possible rules, which is what makes the game so interesting! Rules can concern a piece’s shape, its size (small, medium, or large), the number of pips on its faces (small = 1, medium = 2, large = 3), its orientation, its orientation in relation to other pieces, and so on. To make the game playable, there are some restrictions on rules. For example, no puzzle can refer to other puzzles or the surrounding environment.

What does this have to do with software engineering? Software design in an exercise in inductive reasoning. Often, we engineers have to take specific situation spelled out in requirements, and induce a general rule, so as to avoid unintended behaviors.

The game has a bit of a learning curve. If I could make it easier to teach, I’d love to use it as an interview tool, because I’ve found a strong correlation among my peers between people who are good programmers and people who are good at Zendo.

I would recommend the game. Although buying the 5 Treehouse sets needed to play is expensive, like a deck of playing cards, the Treehouse pieces themselves can be used to play dozens of other great games as well. In the end, I think it’s a good investment.

Can you figure out the answer to the pictured koan? The solution is in the comments on Flickr.


Review: 1000 Blank White Cards

Share:        

1000 Blank White Cards is a family favorite, introduced to us by a good friend of mine. A good discussion of the game itself is available on Wikipedia, so I won’t bore you with the details. We play with most of the suggested card limitation rules. We allow people to pen a couple of cards to start the game, then sprinkle some blank ones throughout the deck.

The picture is a collection of some of my favorites. You’ll notice a media bias. There are lots of cards in our deck that refer to Doctor Who, Pokémon, as well as Monty Python. Media-inspired cards make up less of the deck than you might expect, though, under 10%.

The kids love creating their own cards. They enjoy coloring them even more. In fact, when we played tonight, it was hard to keep them from just coloring cards. We have a rule that the artist must give permission to have their card colored.

The ones I treasure most are ones made by people who don’t often play with us, like my mom and Thor, our friend who introduced us to the game.

This game is a great way to have some cheap fun, but it’s real value comes as a deck forms over several games. For example, you can see looking at some of my teenage son’s previous cards and his newer ones that he’s maturing: the art is better and the game mechanics are better reasoned. My youngest son likes to create cards that grossly unbalance the game, but my older son looks at that as I do – as numbing the fun.

He and I tend to create cards with more subtle themes, like the “Fork of Rassilon” in the center of the photo. For those of you who can’t read the text, the Fork is played on another card, and it allows you to choose whether a condition applies to you. For example, if there was a card, “If you are under 11, +500”, with the Fork, I could choose that, for the purposes of the card, I was under the age of 11.

I strongly recommend the game.


Review: Blithe Spirit

Share:        

Blithe Spirit is a play by Noel Coward being performed by Gaslight Theater weekends through October 31st, 2008.

The intimate theater, which seats about 50, offer an intimate setting for this dark comedy about a man caught between the ghost of his first wife and the life of his second one.

Strong performances make the play. Randy Diamon is excellent as the lead, Charles. Val Durfee turns in a notable performance as Mrs. Bradman. And Mindy Daugherty and Jane Schoenradt Allard as the wives (Ruth and Elvira, respectively) act as wonderful foils for Charles’s horror.

More information on the production, including ticketing, can be found at the Colorado Theater Guild show listing. It’s well worth seeing!

Edit, 10 Oct 2008: I got an opportunity to see the play a second time tonight, and it was even better than the first. I think there were some jitters opening night, but the timing was excellent this evening – as judged by the laughs from the audience! I also thought to spirit away a program, so I could recognize the other actors by name. Steve Seaholm does a fine job as Dr. Bradman. Playing a stoic role is difficult, but Mr. Seaholm pulls it off with ease. Maru Garcia is charming as Madame Arcati, and I think her accent only adds to her mystique. And, last but not least, Davita Terrell garners lots of laughs with her running about as Edith.

Thanks also to the folks behind the scenes for making the show possible. There are several audio and visual cues, and no one missed a beat tonight.

Disclosure: I was involved in the production as “Master Carpenter”, a title I’m certainly not worthy of, and my [ex-]wife Val plays one of the roles. My comments are based on my own experience and acquaintances who also saw the play opening night.


Work and the Mañana Disease

Share:        

I am an advocate of change and refactoring at work, and I was disheartened to receive an email today asking that no one check files into source control unless they are directly related to their sprint, especially the functional requirements.

I found this missive chilling. I find several examples a day of code that could be improved with simple, well-known refactorings, but now I have a mandate not to! To me, doing preventative maintenance is responsible craft-work, and I’m not alone in believing that.

I believe the intent of the policy is to lessen our exposure to risk. We had several merge issues recently, probably due to the Herculean task of merging a handful of code streams into a single integration candidate. In addition, our QA resources are spread very thin. With the last few releases sporting slight flaws, I think the concern is that we’ll miss something bigger, something critical.

I agree. We will miss something critical. We’ll miss an opportunity to wrestle this alligator to the ground while it’s still an adolescent! Every new feature we add gets harder and longer, because the structural changes we need today were put off until later. And, “later often means never”, as Ed Hird says.

In the beginning, I kept hearing we’ll focus on technical initiatives “once [the big roll-out] is complete”. Now, it’s “once the big roll-out is complete and [this other custom work] is done”. My boss cautioned me early on that this stream of work never stops. I’m very worried that my workplace is fast succumbing to the “mañana disease”.

When I was hired, I was told there wasn’t enough time. So I rewrote a library in the course of adding functionality. I wrote unit tests to ensure I didn’t break anything. And things were looking up. As time has passed, I’ve found there are some forces in play in the larger game that I’m not sure how to handle. That library I updated was isolated and my project introduced no breaking changes, which is the opposite of the fragile ball of mud that is the main code. However, these issues can be resolved with baby steps and careful testing.

What I can’t solve with design principles and unit testing is aversion to change. We have been conducting Lunch and Learn sessions for months, and we get the same quarter of the developers – the Early Adopters. We taught ourselves LINQ, fluent interface design, functional programming, and the like. But how do we get the Late Bloomers to where we are, when they don’t seem to want to come? Any ideas?