Since getting to/from the Outer Banks for vacation involved a 10+ hour car trip in each direction, I found myself in an excellent position to study and take notes on the Small Child Interaction Protocol (SCIP). Up close and personal. In the wild, as it were.
Here, I present my findings to date.
The Small Child Interaction Protocol (SCIP)
SCIP begins with one of two interrogatives ("Mama?" or "Dada?"), originating from the Child and directed at a Parent. In theory, the particular interrogative is chosen to establish the communication channel with a particular Parent. In practice, however, the opening interrogatives are issued in broadcast mode, and the Child is generally happy to connect with whichever Parent happens to answer up first.
If neither Parent is able to answer a connection request immediately, the Child will pause momentarily, and then begin issuing a repeated stream of interrogatives ("Mama? Mama? Mama?"). As far as I can determine, there is no rate limiting mechanism employed by the Child when entering into this state. There is in fact some evidence that the Child will typically employ a negative exponential backoff if there is no ACK to any of the first half-dozen connection requests.
Upon receiving the interrogative, a parent is required to ACK the interrogative. The actual form of the ACK is apparently very flexible. "Yes", "Uh-huh", "Hold on", "Wait a second", and even "Who are you?" are all acceptable responses from the Parent. The actual text of the response may be interpreted by a more advanced Child implementation and used to set communication protocol parameters; however, this is not required, and for most Children, the actual presence of the ACK is enough to finalize the establishment of the communication channel.
A conforming Child implementation will acknowledge the ACK from the Parent by issuing another interrogative. This may seem redundant, but experience has shown that many Parent implementations will ACK an initial query without bringing any actual processing resources online to deal with the communication stream. This actually makes sense, as any given Child instance may close down communications when a priority interrupt (ex., remembering a cookie, a sibling Child instance moving, a particularly interesting dust particle, etc.) occurs within 0.0001 ultra-micro-picoseconds of the initial ACK. Thus, the Parent avoids a potentially unnecessary context switch by waiting for the second interrogative.
A Child will indicate to the Parent that it has avoided a priority interrupt and is fully ready to communicate by issuing a second interrogative. The format of this interrogative will indicate if the data to follow is a simple statement (and not requiring a reply from the Parent) or a query for information from the Parent. At this point, the Parent will context switch, bring processing resources online, and prepare to receive data from the Child.
Examples
C: "Mama?"
P: "Yes, dear."
C: "Can I tell you something?"
P: "Go ahead..."
C: "I liked swimming on vacation!"
P: "That's nice, honey."
C: "Mama?"
(pause)
C: "Mama? Mama? Mama?"
P: "Yes, yes. What?"
C: "Can I ask you a question?"
P: "What is it?"
C: "Um... I forgot."
C: "Dada?"
P: "Yes'm?"
C: "Can I ask you a question?"
P: "Sure."
C: "Do dogs have dreams?"
P: "..."
C: "Mama?"
P: "Um-hm?"
C: "Can I tell you something?"
P: "Go ahead..."
C: "Well..." [INFO DUMP FOLLOWS]
Related Protocols
Unfortunately, as Eldest Daughter spent the majority of the trip both ways drawing while listening to her new iPod, the chances to study the Young Teenager Interaction Protocol (YTIP) were minimal. Keep in mind, though, that YTIP is simply a subset of The Surly Teenager Interaction Protocol (STIP). If you are familiar with the main-channel and back-channel communication mediums for STIP (i.e., random vocalizations coupled with arbitrary eye rolls and an almost palpable disdain for anyone over the age of 25 or younger than they are), then you're pretty much set as far as understanding YTIP goes.
No comments:
Post a Comment