|
|
1.1 root 1: % -*- LaTeX -*- (really SLiTeX)
2:
3: \begin{bwslide}
4: \part {UNDERLYING SERVICES}\bf
5:
6: \begin{nrtc}
7: \item ABSTRACT SYNTAX NOTATION ONE (ASN.1)
8:
9: \item THE REMOTE OPERATIONS SERVICE
10:
11: \item THE BINDING SERVICE
12:
13: \item A DISCIPLINE FOR MEAL PREPARATION
14: \end{nrtc}
15: \end{bwslide}
16:
17:
18: \begin{note}\em
19: this part of the presentation corresponds to
20: the definition of abstract syntax notation one ([ISO~8824])
21: and both the old- and new-style ros
22: (namely [X.410] and [ISO~9072/1]),
23: along with chapter~3 of The Applications Cookbook
24: \end{note}
25:
26:
27: \begin{bwslide}
28: \part* {ABSTRACT SYNTAX NOTATION ONE (ASN.1)}\bf
29:
30: \begin{nrtc}
31: \item UNIVERSAL LANGUAGE TO DESCRIBE DATA WITH STRONG TYPING
32:
33: \item RICH, EXTENSIBLE SYNTAX
34:
35: \item USEFUL FOR SPECIFICATION OF NEW PROTOCOLS
36: \begin{nrtc}
37: \item ``CLEAR TO READ'' SPECIFICATIONS (ha!)
38:
39: \item NOT TIED TO MACHINE-ORIENTED STRUCTURES AND RESTRICTIONS
40: \end{nrtc}
41:
42: \item REPRESENTATION CURRENTLY USED BY ALL OSI APPLICATIONS
43: \end{nrtc}
44: \end{bwslide}
45:
46:
47: \begin{bwslide}
48: \ctitle {SYNTAX}
49:
50: \begin{nrtc}
51: \item FORMAT OF A MODULE:
52: \begin{verbatim}
53: <<module>> DEFINITIONS ::=
54: BEGIN
55:
56: <<linkage>>
57:
58: <<declarations>>
59:
60: END
61: \end{verbatim}
62:
63: \item LINKAGE IS USED TO REFERENCE DECLARATIONS IN OTHER MODULES
64:
65: \item THREE KINDS OF DECLARATIONS
66: \begin{nrtc}
67: \item TYPES: DATA STRUCTURES
68:
69: \item VALUES: INSTANCES OF TYPES
70:
71: \item MACROS: LANGUAGE EXTENSION
72: \end{nrtc}
73: \end{nrtc}
74: \end{bwslide}
75:
76:
77: \begin{bwslide}
78: \ctitle {SOME EXAMPLES:\\ LINKAGE}
79:
80: \vskip.5in
81: \begin{verbatim}
82: MTSAbstractService {
83: joint-iso-ccitt mhs-motis(6) mts(3) modules(0)
84: mts-abstract-service(3)
85: } DEFINITIONS ::=
86:
87: BEGIN
88: IMPORTS OBJECT, PORT FROM AbstractServiceNotation {
89: joint-iso-ccitt mhs-motis(6) asdc(2) modules(0)
90: notation(1)
91: }
92:
93: ...
94:
95: END
96: \end{verbatim}
97: \end{bwslide}
98:
99:
100: \begin{bwslide}
101: \ctitle {SOME EXAMPLES:\\ TYPES AND VALUES}
102:
103: \vskip.5in
104: \begin{verbatim}
105: Multiple-defined-contexts ::=
106: BOOLEAN
107:
108: simple Multiple-defined-contexts ::=
109: FALSE -- or TRUE
110:
111: ContentLength ::=
112: INTEGER
113:
114: RegistrationMailType ::=
115: INTEGER {
116: non-registered-mail (0),
117: registered-mail (1),
118: registered-mail-to-addressee-in-person (2)
119: }
120:
121: mymail RegistrationMailType ::=
122: registered-mail --or 1
123: \end{verbatim}
124: \end{bwslide}
125:
126:
127: \begin{bwslide}
128: \ctitle {SOME EXAMPLES:\\ TYPES AND VALUES (cont.)}
129:
130: \vskip.5in
131: \begin{verbatim}
132: RandomNumber ::=
133: BIT STRING
134:
135: Attribute-Groups ::=
136: BITSTRING {
137: storage(0), security(1), private(2)
138: }
139:
140: groups Attribute-Groups ::=
141: { storage, private } -- or '101'B
142: \end{verbatim}
143: \end{bwslide}
144:
145:
146: \begin{bwslide}
147: \ctitle {SOME EXAMPLES:\\ TYPES AND VALUES (cont.)}
148:
149: \vskip.5in
150: \begin{verbatim}
151: Content ::=
152: OCTET STRING
153:
154: NULL
155:
156: SEQUENCE
157:
158: SET
159:
160: BilateralInfo ::=
161: ANY
162: \end{verbatim}
163: \end{bwslide}
164:
165:
166: \begin{bwslide}
167: \ctitle {SOME EXAMPLES:\\ TYPES AND VALUES (cont.)}
168:
169: \vskip.5in
170: \begin{verbatim}
171: Name ::=
172: SEQUENCE OF
173: ISO8571-FADU.Node-Name
174:
175: SecurityContext ::=
176: SET OF SecurityLabel
177:
178: MessageDeliveryEnvelope ::=
179: SEQUENCE {
180: message-delivery-identifier
181: MessageDeliveryIdentifier,
182:
183: message-delivery-time
184: MessageDeliveryTime,
185:
186: other-fields
187: OtherMessageDeliveryFields
188: }
189: \end{verbatim}
190: \end{bwslide}
191:
192:
193: \begin{bwslide}
194: \ctitle {SOME EXAMPLES:\\ TYPES AND VALUES (cont.)}
195:
196: \vskip.5in
197: \begin{verbatim}
198: MessagesWaiting ::=
199: SET {
200: urgent[0]
201: DeliveryQueue,
202:
203: normal[1]
204: DeliveryQueue,
205:
206: nonUrgent[2]
207: DeliveryQueue,
208: }
209:
210: queue MessagesWaiting ::=
211: {
212: urgent { ... }, normal { ... }, nonUrgent { ... }
213: }
214: \end{verbatim}
215: \end{bwslide}
216:
217:
218: \begin{bwslide}
219: \ctitle {SOME EXAMPLES:\\ TYPES AND VALUES (cont.)}\small
220:
221: \vskip.5in
222: \begin{verbatim}
223: PerMessageSubmissionFields ::=
224: SET {
225: ...
226:
227: content-type
228: ContentType,
229:
230: content-identifier
231: ContentIdentifier
232: OPTIONAL,
233:
234: priority
235: Priority
236: DEFAULT normal,
237:
238: per-message-indicators
239: PerMessageIndicators
240: DEFAULT {},
241:
242: ...
243: }
244: \end{verbatim}
245: \end{bwslide}
246:
247:
248: \begin{bwslide}
249: \ctitle {SOME EXAMPLES:\\ TYPES AND VALUES (cont.)}
250:
251: \vskip.5in
252: \begin{verbatim}
253: PDU ::=
254: CHOICE {
255: FTAM-Regime-PDU,
256: File-PDU,
257: Bulk-Data-PDU
258: }
259:
260: SecurityPolicyIdentifier ::=
261: OBJECT IDENTIFIER
262:
263: ISO8571-FADU.Node-Name
264: \end{verbatim}
265: \end{bwslide}
266:
267:
268: \begin{bwslide}
269: \ctitle {SOME EXAMPLES:\\ MACROS}
270:
271: \vskip.5in
272: \begin{verbatim}
273: OPERATION MACRO ::=
274: BEGIN
275: TYPE NOTATION ::= "ARGUMENT" NamedType Result Errors | empty
276: VALUE NOTATION ::= value (VALUE INTEGER)
277: Result ::= "RESULT" NamedType | empty
278: Errors ::= "ERRORS" { ErrorNames } | empty
279:
280: NamedType ::= identifier type | type
281: ErrorNames ::= IdentifierList | empty
282: IdentifierList ::= identifier | IdentifierList "," identifier
283: END
284:
285: users OPERATION
286: RESULT IA5List
287: ERRORS { congested, unableToOpenFile }
288: ::= 2
289: \end{verbatim}
290: \end{bwslide}
291:
292:
293: \begin{bwslide}
294: \ctitle {SOME EXAMPLES:\\ MACROS (cont.)}
295:
296: \vskip.5in
297: \begin{verbatim}
298: ERROR MACRO ::=
299: BEGIN
300: TYPE NOTATION ::= "PARAMETER" NamedType | empty
301: VALUE NOTATION ::= value (VALUE INTEGER)
302:
303: NamedType ::= identifier type | type
304: END
305:
306: unableToOpenFile
307: ERROR
308: PARAMETER IA5List
309: ::= 2
310: \end{verbatim}
311: \end{bwslide}
312:
313:
314: \begin{bwslide}
315: \part* {THE REMOTE OPERATIONS SERVICE}\bf
316:
317: \begin{nrtc}
318: \item STANDARDIZED OSI MECHANISM FOR SPECIFYING TRANSACTIONS
319:
320: \item CURRENTLY ONLY CONNECTION-ORIENTED\\
321: (i.e., ONLY CO-ROS IS DEFINED)
322:
323: \item TERMINOLOGY: ROS-USER, ROS-PROVIDER
324: \end{nrtc}
325: \end{bwslide}
326:
327:
328: \begin{bwslide}
329: \ctitle {EXAMPLE INTERACTIONS:\\ INVOKE}
330:
331: \vskip.5in
332: \diagram[p]{figure25}
333: \end{bwslide}
334:
335:
336: \begin{bwslide}
337: \ctitle {EXAMPLE INTERACTIONS:\\ RESULT}
338:
339: \vskip.5in
340: \diagram[p]{figure26}
341: \end{bwslide}
342:
343:
344: \begin{bwslide}
345: \ctitle {EXAMPLE INTERACTIONS:\\ ERROR}
346:
347: \vskip.5in
348: \diagram[p]{figure27}
349: \end{bwslide}
350:
351:
352: \begin{bwslide}
353: \ctitle {EXAMPLE INTERACTIONS:\\ USER REJECTION}
354:
355: \vskip.5in
356: \diagram[p]{figure28}
357: \end{bwslide}
358:
359:
360: \begin{bwslide}
361: \ctitle {EXAMPLE INTERACTIONS:\\ PROVIDER REJECTION}
362:
363: \vskip.5in
364: \diagram[p]{figure29}
365: \end{bwslide}
366:
367:
368: \begin{bwslide}
369: \ctitle {RO-INVOKE SERVICE}
370:
371: \begin{nrtc}
372: \item UNCONFIRMED SERVICE:\\ RO-INVOKE.REQUEST, RO-INVOKE.INDICATION
373:
374: \item PARAMETERS
375: \[\begin{tabular}{ll}
376: OPERATION NUMBER& integer\\
377: OPERATION CLASS& (a)synchronous (local)\\
378: \ \ \ (optional)& \\
379: ARGUMENT& asn.1 type (APDU)\\
380: INVOCATION IDENTIFIER& integer\\
381: LINKED-INVOCATION ID& integer\\
382: PRIORITY (optional)& integer (local)
383: \end{tabular}\]
384:
385: \item ARGUMENT IS OPTIONAL IN NEW-STYLE ROS
386:
387: \item THE LINKED-INVOCATION IDENTIFIER IS NOT PRESENT IN OLD-STYLE ROS
388:
389: \item APDU IS THE USER-SUPPLIED DATA STRUCTURE, AN APPLICATION PROTOCOL DATA
390: UNIT
391: \end{nrtc}
392: \end{bwslide}
393:
394:
395: \begin{bwslide}
396: \ctitle {RO-RESULT SERVICE}
397:
398: \begin{nrtc}
399: \item UNCONFIRMED SERVICE:\\ RO-RESULT.REQUEST, RO-RESULT.INDICATION
400:
401: \item PARAMETERS
402: \[\begin{tabular}{ll}
403: INVOCATION IDENTIFIER& integer\\
404: RESULT& asn.1 type (APDU)\\
405: PRIORITY (optional)& integer (local)
406: \end{tabular}\]
407:
408: \item RESULT IS OPTIONAL IN NEW-STYLE ROS
409: \end{nrtc}
410: \end{bwslide}
411:
412:
413: \begin{bwslide}
414: \ctitle {RO-ERROR SERVICE}
415:
416: \begin{nrtc}
417: \item UNCONFIRMED SERVICE:\\ RO-ERROR.REQUEST, RO-ERROR.INDICATION
418:
419: \item PARAMETERS
420: \[\begin{tabular}{ll}
421: INVOCATION IDENTIFIER& integer\\
422: ERROR NUMBER& integer\\
423: PARAMETER (optional)& asn.1 type (APDU)\\
424: PRIORITY (optional)& integer (local)
425: \end{tabular}\]
426: \end{nrtc}
427: \end{bwslide}
428:
429:
430: \begin{bwslide}
431: \ctitle {RO-U-REJECT SERVICE}
432:
433: \begin{nrtc}
434: \item UNCONFIRMED SERVICE:\\ RO-U-REJECT.REQUEST, RO-U-REJECT.INDICATION
435:
436: \item PARAMETERS
437: \[\begin{tabular}{ll}
438: INVOCATION IDENTIFIER& integer\\
439: REASON& integer\\
440:
441: PRIORITY (optional)& integer (local)
442: \end{tabular}\]
443: \end{nrtc}
444: \end{bwslide}
445:
446:
447: \begin{bwslide}
448: \ctitle {RO-P-REJECT SERVICE}
449:
450: \begin{nrtc}
451: \item PROVIDER-INITIATED SERVICE:\\ RO-P-REJECT.INDICATION
452:
453: \item PARAMETERS
454: \[\begin{tabular}{ll}
455: INVOCATION IDENTIFIER& integer\\
456: \ \ \ (optional)& \\
457: REASON& integer\\
458: APDU (optional)& asn.1 type\\
459: \end{tabular}\]
460:
461: \item INVOCATION IDENTIFIER MAY NOT BE PRESENT IF:
462: \begin{nrtc}
463: \item PROBLEM IS NOT RELATED TO A PARTICULAR INVOCATION, OR
464:
465: \item THE INFORMATION IS UNAVAILABLE
466: \end{nrtc}
467:
468: \item IF THE LOCAL PROVIDER COULD NOT SEND AN INVOCATION (OR RESULT OR ERROR)
469: THEN APDU IS THE ASSOCIATED USER-SUPPLIED ARGUMENT
470: \end{nrtc}
471: \end{bwslide}
472:
473:
474: \begin{bwslide}
475: \ctitle {REASONS FOR REJECTIONS}
476:
477: \begin{nrtc}
478: \item FOUR CLASSES OF REJECTIONS
479: \begin{nrtc}
480: \item GENERAL PROBLEMS
481:
482: \item INVOKE PROBLEMS
483:
484: \item RETURN RESULT PROBLEMS
485:
486: \item RETURN ERROR PROBLEMS
487: \end{nrtc}
488: \end{nrtc}
489: \end{bwslide}
490:
491:
492: \begin{bwslide}
493: \ctitle {GENERAL PROBLEMS:\\ DETECTED BY THE ROS-PROVIDER}
494:
495: \begin{nrtc}
496: \item UNRECOGNIZED APDU
497:
498: \item MISTYPED APDU
499:
500: \item BADLY STRUCTURED APDU
501: \end{nrtc}
502: \end{bwslide}
503:
504:
505: \begin{bwslide}
506: \ctitle {INVOKE PROBLEMS:\\ DETECTED BY THE ROS-USER}
507:
508: \begin{nrtc}
509: \item DUPLICATE INVOCATION
510:
511: \item UNRECOGNIZED OPERATION
512:
513: \item MISTYPED ARGUMENT
514:
515: \item RESOURCE LIMITATION
516:
517: \item INITIATOR RELEASING\footnote{not allowed in old-style ros}
518:
519: \item UNRECOGNIZED LINKED ID$^*$
520:
521: \item LINKED RESPONSE UNEXPECTED$^*$
522:
523: \item UNEXPECTED CHILD OPERATION$^*$
524: \end{nrtc}
525: \end{bwslide}
526:
527:
528: \begin{bwslide}
529: \ctitle {RETURN RESULT PROBLEMS:\\ DETECTED BY THE ROS-USER}
530:
531: \begin{nrtc}
532: \item UNRECOGNIZED INVOCATION
533:
534: \item RESULT RESPONSE UNEXPECTED
535:
536: \item MISTYPED RESULT
537: \end{nrtc}
538: \end{bwslide}
539:
540:
541: \begin{bwslide}
542: \ctitle {RETURN ERROR PROBLEMS:\\ DETECTED BY THE ROS-USER}
543:
544: \begin{nrtc}
545: \item UNRECOGNIZED INVOCATION
546:
547: \item ERROR RESPONSE UNEXPECTED
548:
549: \item UNRECOGNIZED ERROR
550:
551: \item UNEXPECTED ERROR
552:
553: \item MISTYPED PARAMETER
554: \end{nrtc}
555: \end{bwslide}
556:
557:
558: \begin{bwslide}
559: \ctitle {REMOTE OPERATION MACROS}
560:
561: \begin{nrtc}
562: \item THE DEFINITIONS FOR REMOTE OPERATIONS USE THE ASN.1 MACRO FACILITY
563:
564: \item ALTHOUGH PROBLEMATIC FOR PARSERS, IT RESULTS IN VASTLY SIMPLIFIED
565: SPECIFICATIONS
566: \end{nrtc}
567: \end{bwslide}
568:
569:
570: \begin{bwslide}
571: \ctitle {AN EXAMPLE}
572:
573: \vskip.5in
574: \begin{verbatim}
575: finger OPERATION
576: ARGUMENT IA5List
577: RESULT IA5List
578: ERRORS { congested, unableToAccessFile,
579: unableToPipe, unableToFork,
580: errorReading }
581: ::= 5
582:
583: congested
584: ERROR
585: ::= 0
586: \end{verbatim}
587: \end{bwslide}
588:
589:
590: \begin{bwslide}
591: \ctitle {REMOTE OPERATION MACROS (cont.)}
592:
593: \begin{nrtc}
594: \item USING THE \verb"LINKED" CLAUSE, AN OPERATION CAN DEFINE LINKED
595: OPERATIONS
596:
597: \item AN OPERATION OR ERROR VALUE CAN ALSO TAKE A GLOBAL VALUE
598: \begin{nrtc}
599: \item AN OBJECT IDENTIFIER IS USED IN ADDITION TO THE
600: OPERATION OR ERROR CODE
601: \end{nrtc}
602:
603: \item THE \verb"BIND" AND \verb"UNBIND" MACROS ARE USED TO DEFINE BINDING
604: INFORMATION
605: \end{nrtc}
606: \end{bwslide}
607:
608:
609: \begin{bwslide}
610: \part* {THE BINDING SERVICE}\bf
611:
612: \begin{nrtc}
613: \item OLD- AND NEW-STYLE ROS USE DIFFERENT METHODS FOR BINDING
614:
615: \item FOR OUR PURPOSES, THE METHOD OF BINDING IS UNIMPORTANT
616:
617: \item BUT WE'LL BRIEFLY REVIEW THEM ANYWAY FOR COMPLETENESS
618: \end{nrtc}
619: \end{bwslide}
620:
621:
622: \begin{bwslide}
623: \ctitle {OLD-STYLE BINDING}
624:
625: \begin{nrtc}
626: \item IN OLD-STYLE ROS, BINDING WAS DONE IN ONE OF TWO WAYS:
627: \begin{nrtc}
628: \item BY USING AN EXISTING RELIABLE TRANSFER SERVICE ASSOCIATION
629:
630: \item BY USING THE RO-BEGIN AND RO-END SERVICE ([ECMA~TR/31] ONLY)
631: \end{nrtc}
632: \end{nrtc}
633: \end{bwslide}
634:
635:
636: \begin{bwslide}
637: \ctitle {OLD-STYLE BINDING (cont.)}
638:
639: \vskip.5in
640: \diagram[p]{figure7}
641: \end{bwslide}
642:
643:
644: \begin{bwslide}
645: \ctitle {NEW-STYLE BINDING}
646:
647: \begin{nrtc}
648: \item IN NEW-STYLE ROS, BINDING IS ALSO DONE IN ONE OF TWO WAYS:
649: \begin{nrtc}
650: \item BY USING AN EXISTING RELIABLE TRANSFER SERVICE ASSOCIATION
651:
652: \item BY USING ASSOCIATION CONTROL
653: \end{nrtc}
654: \end{nrtc}
655: \end{bwslide}
656:
657:
658: \begin{bwslide}
659: \ctitle {NEW-STYLE BINDING (cont.)}
660:
661: \vskip.5in
662: \diagram[p]{figure8}
663: \end{bwslide}
664:
665:
666: \begin{bwslide}
667: \part* {A DISCIPLINE FOR MEAL PREPARATION}\bf
668:
669: \begin{nrtc}
670: \item WE HAVE INTRODUCED
671: \begin{nrtc}
672: \item A MODEL FOR DISTRIBUTED APPLICATIONS, AND
673:
674: \item THE SERVICES AVAILABLE TO THE APPLICATION TO REALIZE THIS
675: \end{nrtc}
676:
677: \item WHAT WE NEED IS THE ``DISCIPLINE'' TO FOCUS OUR ENERGIES
678: \end{nrtc}
679: \end{bwslide}
680:
681:
682: \begin{bwslide}
683: \ctitle {INITIATORS}
684:
685: \begin{nrtc}
686: \item IN GENERAL, THERE ARE TWO KINDS OF INITIATOR IMPLEMENTATIONS
687:
688: \item INTERACTIVE
689: \begin{nrtc}
690: \item A USER RUNS A PROGRAM AND INTERACTIVELY DIRECTS THE
691: INVOCATION OF OPERATIONS
692: \end{nrtc}
693:
694: \item EMBEDDED
695: \begin{nrtc}
696: \item A PROGRAM CAUSES AN ASSOCIATION TO BE AUTOMATICALLY FORMED
697: AND OPERATIONS TO BE INVOKED
698: \end{nrtc}
699: \end{nrtc}
700: \end{bwslide}
701:
702:
703: \begin{bwslide}
704: \ctitle {RESPONDERS}
705:
706: \begin{nrtc}
707: \item IN GENERAL, THERE ARE TWO KINDS OF RESPONDER IMPLEMENTATIONS,
708: DEPENDING ON HOW ASSOCIATIONS ARE GIVEN TO THE PROGRAM WHICH
709: IMPLEMENTS THE SERVICE
710:
711: \item SINGLE ASSOCIATION (a.k.a. THE DYNAMIC APPROACH)
712: \begin{nrtc}
713: \item EACH TIME THE SERVICE IS REQUESTED, A NEW INSTANCE OF
714: THE PROGRAM IS EXECUTED
715: \end{nrtc}
716:
717: \item MULTIPLE ASSOCIATION (a.k.a. THE STATIC APPROACH)
718: \begin{nrtc}
719: \item EACH TIME THE SERVICE IS REQUESTED, THE REQUEST IS GIVEN TO A
720: SINGLE, ALREADY EXECUTING, INSTANCE OF THE PROGRAM
721: \end{nrtc}
722: \end{nrtc}
723: \end{bwslide}
724:
725:
726: \begin{bwslide}
727: \ctitle {GENERAL ORGANIZATION}
728:
729: \begin{nrtc}
730: \item AT COMPILE-TIME:
731: \begin{nrtc}
732: \item USE RO-SPECIFICATION TO GENERATE SUPPORT FACILITIES
733: \end{nrtc}
734:
735: \item AT RUN-TIME:
736: \begin{nrtc}
737: \item USE DIRECTORY SERVICES TO LOCATE/REGISTER SERVICES
738:
739: \item USE ASSOCIATION CONTROL TO BIND/UNBIND APPLICATIONS
740:
741: \item USE REMOTE OPERATIONS TO INVOKE TRANSACTIONS
742: \end{nrtc}
743: \end{nrtc}
744: \end{bwslide}
745:
746:
747: \begin{bwslide}
748: \ctitle {STATIC (COMPILE-TIME) ORGANIZATION}
749:
750: \vskip.15in
751: \diagram[p]{figure9}
752: \end{bwslide}
753:
754:
755: \begin{bwslide}
756: \ctitle {DYNAMIC (RUN-TIME) ORGANIZATION}
757:
758: \vskip.15in
759: \diagram[p]{figure10}
760: \end{bwslide}
761:
762:
763: \begin{bwslide}
764: \ctitle {IN PERSPECTIVE}
765:
766: \begin{nrtc}
767: \item \emph{THE COOKBOOK} PRESENTS \emph{ONE} POSSIBLE METHOD
768: FOR REALIZING THE MODEL USING THE UNDERLYING FACILITIES
769:
770: \item MANY MORE ARE POSSIBLE\\
771: \begin{nrtc}
772: \item AND SOME WILL BE VASTLY SUPERIOR
773: \end{nrtc}
774:
775: \item THE APPROACH TAKEN BY \emph{THE COOKBOOK} ATTEMPTS TO BALANCE
776: SIMPLICTY AND EXTENSIBILITY
777:
778: \item HENCE, IT MAY STILL BE UNDERDONE FOR SOME CHEFS AND OVERDONE FOR
779: OTHERS
780: \end{nrtc}
781: \end{bwslide}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.