Episode 3

Prototypes

What Happened

Dan Hosmer finally got back to his office late Saturday, hours after he’d planned to be watching the Wolverines taking on the Trojans. It had been a confusing day. He hadn’t yet managed to write one line of the article on which he’d planned to spend the morning.

Hosmer pulled up his notes to sort them while his interviews with the Romero boy, with Joe Romero, and with Grant Woodson from the Bellvale police. Woodson seemed particularly cooperative. Taking stock, Hosmer extended the fact picture of a case – if there was a case here – that seemed determined to spread.

  • Julie Chandler arrived at the hospital shortly before 2am Saturday morning. In addition to some superficial scrapes and bruises, she had a cut above her eyebrow, a sprained ankle, and seemed dazed.
  • Although a concussion was initially suspected, she does not appear to have suffered a significant head injury.
  • Julie does not recall taking any medication at, or after, the party. She does not recall either accident, and seems vague about details of the previous evening.
  • A toxicology screening suggested the presence of a benzodiazepine – a class of sedatives that includes date-rape drugs – and traces of alcohol. There were also indications of elevated WBC and mild anemia.
  • Disturbed by the toxicology report, Dr. Wetering asked Julie for permission to prepare a rape kit. She categorically refused, without explanation.
  • Dr. Wetering informed Julie’s parents, Lauren and Birgitta, of the toxicology results and of Julie’s reluctance. He told them that he was required to inform the police as well. He will recommend that under the circumstances she not be charged with driving under the influence. Julie’s parents do not understand her refusal to be examined for evidence of sexual assault, but they will not overrule her choice.

How We Map It

By the end of the day, the issues, shape, and direction of the case all remain unclear. It is apparent, however, that the police are scrutinizing the events of the previous night, perhaps with an eye to a possible sexual assault in addition to the two automobile accidents. Potential liabilities for damage to both cars, and for supplying alcohol to minor children, need to be considered. The benzodiazepine is a disturbing complication.

In the previous episode, we clarified our map by giving different kinds of notes a distinctive appearance. For example, all the notes that represent people are dark blue lozenges with the “Person” badge.

While it’s easy enough to set the shape and color of newly-created notes, we can save a few steps by making a Prototype note. If you then assign a new note to that prototype, the new note takes on all the characteristics of the prototype unless you specify otherwise. You lose no flexibility, but you can automatically set lots of properties simply by choosing a prototype.

Prototypes can themselves use prototypes; the mechanism is general and fast. Indeed, because prototypes make it easy for notes to share common values, using prototypes can actually make files more compact and more efficient.

Any note can serve as a prototype, but most people prefer to make a few special notes that function only as prototypes. Here, all the prototypes are gathered in one place to make a legend or visual key for the map.

That’s important, because this case is growing more and more complicated – and it’s not following the script.

R&D

Inheritance is one of the core concepts of modern computer science and is the foundation of object oriented programming. Few programmers, and almost no one in knowledge representation, would be eager to undertake a major project today without inheritance. Nevertheless, it appears that Tinderbox was the first software tool to put inheritance into the hands of the general audience.

Mastering inheritance often takes up several weeks or months of modern computer science courses. Prototype inheritance was originally invented to avoid the need for dedicated classes and class objects, which students often find confusing. Surprisingly, Tinderbox users consistently reinvented class objects in the form of dedicated prototype notes. Nevertheless, inheritance has not posed nearly as great an obstacle for Tinderbox users as we originally feared.

The best introduction to prototype-based languages is Prototype-Based Programming: Concepts, edited by James Noble, Antero Taivalsaari, and Ivan Moore (Springer, 2001).