The Project: Scoring Program

For those (both?) of you who are reading this and don't know me personally, I do a little bit of work for Poetry Slam, Inc., the non-profit that operates the National Poetry Slam, Individual World Poetry Slam, and Women of the World Poetry Slam. Those are some of the largest, if not the largest performance poetry competitions in the world. For the past few years I've been a director for a few of those, and worn a few hats for some others, mostly involving logistics.

The biggest headache in the entire process is scoring. Frankly our scoring system sucks.


If you have never been to a poetry slam (really?), competitors perform original poems with certain limitations, and are given scores from 0 to 10 based on the whim of 5 judges chosen at random from the audience. The high and low scores are dropped out, the remaining three added up, any time penalties are assessed, and the final score is recorded.

We do this all by hand. Team and individual competitions have differing rules, but in a large competition, up to 16 bouts, each containing many scores need to be hand carried to a central location, then read and entered into a spreadsheet for number crunching. This whole process is slow and incredibly error-prone.

I know what you are thinking, writing a little app for this would be easy! Here's the deal, PSi is a non-profit, and no one gets paid for anything there, so this little project was at the mercy of my free time. Well I have some free time!

Here are the requirements:

  1. Platform neutral(Including Linux!)
  2. Hold a list of competitors
  3. Allow bout setup information to be entered
    1. Number of Judges
    2. Number of Rotations
    3. Number of performers per rotation (e.g. 12/7/4)
    4. Basic info (Venue, MC, Scorekeeper, Bout Manager, Bout Identifier)
  4. Keep time
  5. Assess Penalties
  6. Allow multiple rotation order types (e.g. random, manual entry, by score)
  7. Handle ties
  8. Export to XML or CSV

The work so far:

  1. UML Class diagrams
  2. Use-Case models
  3. Wrote base classes
  4. Tested Bout setup code
  5. Started UI layout in Flex
  6. Created Timer Component
  7. Created rotation setup component
  8. Tested Bout setup UI

I would love to have this done in time for WOW in March. If you are interested in helping as a tester, hit me up I need a good name for it as well, PSi Scoring Program just sounds lame.

A nerd needs a project because a nerd builds stuff. All the time. Those lulls in the conversation over dinner? That’s the nerd working on his project in his head.
-Michael Lopp :: The Nerd Handbook