Move notbenh's talk
[gitmo/moose-website.git] / object_meta_programming_slides / slides / start.html
1 <!-- BEGIN s5 -->
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
3         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4 <html xmlns="http://www.w3.org/1999/xhtml">
5 <head>
6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
7 <title>meta meta meta meta</title>
8 <meta name="generator" content="S5" />
9 <meta name="version" content="S5 1.0" />
10 <meta name="presdate" content="20041007" />
11 <meta name="author" content="Eric A. Meyer" />
12 <link rel="stylesheet" href="ui/slides.css" type="text/css" media="projection" id="slideProj" />
13 <link rel="stylesheet" href="ui/opera.css" type="text/css" media="projection" id="operaFix" />
14 <link rel="stylesheet" href="ui/print.css" type="text/css" media="print" id="slidePrint" />
15 <script src="ui/slides.js" type="text/javascript"></script>
16 </head>
17 <body>
18
19 <div class="layout">
20   <div id="currentSlide"></div>
21   <div id="header"></div>
22   <div id="footer">
23     <h2>יובל קוג'מן</h2>
24     <h2>nothingmuch@woobling.org</h2>
25     <div id="controls"></div>
26   </div>
27 </div>
28
29 <div class="slide">
30     <h1>Object Meta Programming</h1>
31     <h2>YAPC::EU::2007</h2>
32     <h3>Aug 29, 2007</h3>
33 </div>
34
35
36 <!-- BEGIN slide -->
37 <div class="slide">
38 <img name="img" id="img" width="350" src="images/promopi.jpg" align=right>
39 <h1>HAI FRENDS</h1>
40 <p>
41
42 </p>
43 <h2>My name is Yuval</h2>
44
45 </div>
46 <!-- END slide -->
47
48
49 <!-- BEGIN slide -->
50 <div class="slide">
51 <img name="img" id="img" width="350" src="images/7104_Squares_with_Concentric_Circles_Kandinsky_Wassily.jpg" align=right>
52 <h1>Meta Programming</h1>
53 <p>
54
55 </p>
56
57 </div>
58 <!-- END slide -->
59
60
61 <!-- BEGIN slide -->
62 <div class="slide">
63 <img name="img" id="img" width="350" src="images/door.jpg" align=right>
64 <h1>Introduction</h1>
65 <p>
66
67 </p>
68 <small>continued...</small>
69
70 </div>
71 <!-- END slide -->
72
73
74 <!-- BEGIN slide -->
75 <div class="slide">
76 <img name="img" id="img" width="350" src="images/door.jpg" align=right>
77 <h1>Introduction</h1>
78 <p>
79
80 </p>
81 <ul>
82 <li>Meta programming</li>
83 </ul>
84 <small>continued...</small>
85
86 </div>
87 <!-- END slide -->
88
89
90 <!-- BEGIN slide -->
91 <div class="slide">
92 <img name="img" id="img" width="350" src="images/door.jpg" align=right>
93 <h1>Introduction</h1>
94 <p>
95
96 </p>
97 <ul>
98 <li>Meta programming</li>
99 <li>writing <em>code</em> which <em>outputs</em> or <em>manipulates</em> <em>code</em></li>
100 </ul>
101
102 </div>
103 <!-- END slide -->
104
105
106 <!-- BEGIN slide -->
107 <div class="slide">
108 <img name="img" id="img" width="350" src="images/manimal.jpg" align=right>
109 <h1>Many forms</h1>
110 <p>
111
112 </p>
113 <small>continued...</small>
114
115 </div>
116 <!-- END slide -->
117
118
119 <!-- BEGIN slide -->
120 <div class="slide">
121 <img name="img" id="img" width="350" src="images/manimal.jpg" align=right>
122 <h1>Many forms</h1>
123 <p>
124
125 </p>
126 <ul>
127 <li>string <tt>eval</tt></li>
128 </ul>
129 <small>continued...</small>
130
131 </div>
132 <!-- END slide -->
133
134
135 <!-- BEGIN slide -->
136 <div class="slide">
137 <img name="img" id="img" width="350" src="images/manimal.jpg" align=right>
138 <h1>Many forms</h1>
139 <p>
140
141 </p>
142 <ul>
143 <li>string <tt>eval</tt></li>
144 <li><tt>%::</tt></li>
145 </ul>
146 <small>continued...</small>
147
148 </div>
149 <!-- END slide -->
150
151
152 <!-- BEGIN slide -->
153 <div class="slide">
154 <img name="img" id="img" width="350" src="images/manimal.jpg" align=right>
155 <h1>Many forms</h1>
156 <p>
157
158 </p>
159 <ul>
160 <li>string <tt>eval</tt></li>
161 <li><tt>%::</tt></li>
162 <li>closure generators</li>
163 </ul>
164 <small>continued...</small>
165
166 </div>
167 <!-- END slide -->
168
169
170 <!-- BEGIN slide -->
171 <div class="slide">
172 <img name="img" id="img" width="350" src="images/manimal.jpg" align=right>
173 <h1>Many forms</h1>
174 <p>
175
176 </p>
177 <ul>
178 <li>string <tt>eval</tt></li>
179 <li><tt>%::</tt></li>
180 <li>closure generators</li>
181 <li>macros</li>
182 </ul>
183 <small>continued...</small>
184
185 </div>
186 <!-- END slide -->
187
188
189 <!-- BEGIN slide -->
190 <div class="slide">
191 <img name="img" id="img" width="350" src="images/manimal.jpg" align=right>
192 <h1>Many forms</h1>
193 <p>
194
195 </p>
196 <ul>
197 <li>string <tt>eval</tt></li>
198 <li><tt>%::</tt></li>
199 <li>closure generators</li>
200 <li>macros</li>
201 <li>real macros</li>
202 </ul>
203 <small>continued...</small>
204
205 </div>
206 <!-- END slide -->
207
208
209 <!-- BEGIN slide -->
210 <div class="slide">
211 <img name="img" id="img" width="350" src="images/manimal.jpg" align=right>
212 <h1>Many forms</h1>
213 <p>
214
215 </p>
216 <ul>
217 <li>string <tt>eval</tt></li>
218 <li><tt>%::</tt></li>
219 <li>closure generators</li>
220 <li>macros</li>
221 <li>real macros</li>
222 <li>compilers</li>
223 </ul>
224
225 </div>
226 <!-- END slide -->
227
228
229 <!-- BEGIN slide -->
230 <div class="slide">
231 <img name="img" id="img" width="350" src="images/Flying_Spaghetti_Monster-thumb.jpg" align=right>
232 <h1>Many forms</h1>
233 <p>
234
235 </p>
236 <small>continued...</small>
237
238 </div>
239 <!-- END slide -->
240
241
242 <!-- BEGIN slide -->
243 <div class="slide">
244 <img name="img" id="img" width="350" src="images/Flying_Spaghetti_Monster-thumb.jpg" align=right>
245 <h1>Many forms</h1>
246 <p>
247
248 </p>
249 <ul>
250 <li>Home grown snippets</li>
251 </ul>
252 <small>continued...</small>
253
254 </div>
255 <!-- END slide -->
256
257
258 <!-- BEGIN slide -->
259 <div class="slide">
260 <img name="img" id="img" width="350" src="images/Flying_Spaghetti_Monster-thumb.jpg" align=right>
261 <h1>Many forms</h1>
262 <p>
263
264 </p>
265 <ul>
266 <li>Home grown snippets</li>
267 <li>Home grown packages</li>
268 </ul>
269 <small>continued...</small>
270
271 </div>
272 <!-- END slide -->
273
274
275 <!-- BEGIN slide -->
276 <div class="slide">
277 <img name="img" id="img" width="350" src="images/Flying_Spaghetti_Monster-thumb.jpg" align=right>
278 <h1>Many forms</h1>
279 <p>
280
281 </p>
282 <ul>
283 <li>Home grown snippets</li>
284 <li>Home grown packages</li>
285 <li>Stuff on the CPAN &#40;e.g. <tt>Class::Accessor</tt>, <tt>Code::Perl</tt>&#41;</li>
286 </ul>
287 <small>continued...</small>
288
289 </div>
290 <!-- END slide -->
291
292
293 <!-- BEGIN slide -->
294 <div class="slide">
295 <img name="img" id="img" width="350" src="images/Flying_Spaghetti_Monster-thumb.jpg" align=right>
296 <h1>Many forms</h1>
297 <p>
298
299 </p>
300 <ul>
301 <li>Home grown snippets</li>
302 <li>Home grown packages</li>
303 <li>Stuff on the CPAN &#40;e.g. <tt>Class::Accessor</tt>, <tt>Code::Perl</tt>&#41;</li>
304 <li>Large systems &#40;<tt>Template::Toolkit</tt>&#41;</li>
305 </ul>
306
307 </div>
308 <!-- END slide -->
309
310
311 <!-- BEGIN slide -->
312 <div class="slide">
313 <img name="img" id="img" width="350" src="images/16_peer_pressure_smoking.gif" align=right>
314 <h1>Summary</h1>
315 <p>
316
317 </p>
318 <ul>
319 <li>You should already know it</li>
320 <li>You probably do it</li>
321 </ul>
322 <small>continued...</small>
323
324 </div>
325 <!-- END slide -->
326
327
328 <!-- BEGIN slide -->
329 <div class="slide">
330 <img name="img" id="img" width="350" src="images/16_peer_pressure_smoking.gif" align=right>
331 <h1>Summary</h1>
332 <p>
333
334 </p>
335 <ul>
336 <li>You should already know it</li>
337 <li>You probably do it</li>
338 <li>That&#39;s the intended audience anyway ;-&#41;</li>
339 </ul>
340
341 </div>
342 <!-- END slide -->
343
344
345 <!-- BEGIN slide -->
346 <div class="slide">
347
348 <h1>Object Meta Programming</h1>
349
350 </div>
351 <!-- END slide -->
352
353
354 <!-- BEGIN slide -->
355 <div class="slide">
356
357 <h1>Object Meta Programming</h1>
358 <small>continued...</small>
359
360 </div>
361 <!-- END slide -->
362
363
364 <!-- BEGIN slide -->
365 <div class="slide">
366
367 <h1>Object Meta Programming</h1>
368 <ul>
369 <li>Code that outputs or manipulates <em>object oriented code</em></li>
370 </ul>
371 <small>continued...</small>
372
373 </div>
374 <!-- END slide -->
375
376
377 <!-- BEGIN slide -->
378 <div class="slide">
379
380 <h1>Object Meta Programming</h1>
381 <ul>
382 <li>Code that outputs or manipulates <em>object oriented code</em></li>
383 <li>Often written in OO</li>
384 </ul>
385
386 </div>
387 <!-- END slide -->
388
389
390 <!-- BEGIN slide -->
391 <div class="slide">
392 <img name="img" id="img" width="350" src="images/ApplePieSlice.jpg" align=right>
393 <h1>Simple Examples</h1>
394 <p>
395
396 </p>
397 <small>continued...</small>
398
399 </div>
400 <!-- END slide -->
401
402
403 <!-- BEGIN slide -->
404 <div class="slide">
405 <img name="img" id="img" width="350" src="images/ApplePieSlice.jpg" align=right>
406 <h1>Simple Examples</h1>
407 <p>
408
409 </p>
410 <ul>
411 <li><tt>Class::Accessor</tt>, <tt>Class::InsideOut</tt></li>
412 </ul>
413 <small>continued...</small>
414
415 </div>
416 <!-- END slide -->
417
418
419 <!-- BEGIN slide -->
420 <div class="slide">
421 <img name="img" id="img" width="350" src="images/ApplePieSlice.jpg" align=right>
422 <h1>Simple Examples</h1>
423 <p>
424
425 </p>
426 <ul>
427 <li><tt>Class::Accessor</tt>, <tt>Class::InsideOut</tt></li>
428
429 <ul>
430 <li>Generates accessor methods</li>
431 </ul></ul>
432 <small>continued...</small>
433
434 </div>
435 <!-- END slide -->
436
437
438 <!-- BEGIN slide -->
439 <div class="slide">
440 <img name="img" id="img" width="350" src="images/ApplePieSlice.jpg" align=right>
441 <h1>Simple Examples</h1>
442 <p>
443
444 </p>
445 <ul>
446 <li><tt>Class::Accessor</tt>, <tt>Class::InsideOut</tt></li>
447
448 <ul>
449 <li>Generates accessor methods</li>
450 </ul>
451 <li><tt>Class::Prototyped</tt></li>
452 </ul>
453 <small>continued...</small>
454
455 </div>
456 <!-- END slide -->
457
458
459 <!-- BEGIN slide -->
460 <div class="slide">
461 <img name="img" id="img" width="350" src="images/ApplePieSlice.jpg" align=right>
462 <h1>Simple Examples</h1>
463 <p>
464
465 </p>
466 <ul>
467 <li><tt>Class::Accessor</tt>, <tt>Class::InsideOut</tt></li>
468
469 <ul>
470 <li>Generates accessor methods</li>
471 </ul>
472 <li><tt>Class::Prototyped</tt></li>
473
474 <ul>
475 <li>Prototype object support in Perl</li>
476 </ul></ul>
477 <small>continued...</small>
478
479 </div>
480 <!-- END slide -->
481
482
483 <!-- BEGIN slide -->
484 <div class="slide">
485 <img name="img" id="img" width="350" src="images/ApplePieSlice.jpg" align=right>
486 <h1>Simple Examples</h1>
487 <p>
488
489 </p>
490 <ul>
491 <li><tt>Class::Accessor</tt>, <tt>Class::InsideOut</tt></li>
492
493 <ul>
494 <li>Generates accessor methods</li>
495 </ul>
496 <li><tt>Class::Prototyped</tt></li>
497
498 <ul>
499 <li>Prototype object support in Perl</li>
500 </ul>
501 <li>Lots of stuff on the CPAN</li>
502 </ul>
503
504 </div>
505 <!-- END slide -->
506
507
508 <!-- BEGIN slide -->
509 <div class="slide">
510 <img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
511 <h1>Modeling OO</h1>
512 <p>
513
514 </p>
515 <small>continued...</small>
516
517 </div>
518 <!-- END slide -->
519
520
521 <!-- BEGIN slide -->
522 <div class="slide">
523 <img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
524 <h1>Modeling OO</h1>
525 <p>
526
527 </p>
528 <ul>
529 <li>High level object meta programming</li>
530 </ul>
531 <small>continued...</small>
532
533 </div>
534 <!-- END slide -->
535
536
537 <!-- BEGIN slide -->
538 <div class="slide">
539 <img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
540 <h1>Modeling OO</h1>
541 <p>
542
543 </p>
544 <ul>
545 <li>High level object meta programming</li>
546
547 <ul>
548 <li>The current trend</li>
549 </ul></ul>
550 <small>continued...</small>
551
552 </div>
553 <!-- END slide -->
554
555
556 <!-- BEGIN slide -->
557 <div class="slide">
558 <img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
559 <h1>Modeling OO</h1>
560 <p>
561
562 </p>
563 <ul>
564 <li>High level object meta programming</li>
565
566 <ul>
567 <li>The current trend</li>
568 <li>The picture illustrates an object modelling with class =&#41;</li>
569 </ul></ul>
570 <small>continued...</small>
571
572 </div>
573 <!-- END slide -->
574
575
576 <!-- BEGIN slide -->
577 <div class="slide">
578 <img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
579 <h1>Modeling OO</h1>
580 <p>
581
582 </p>
583 <ul>
584 <li>High level object meta programming</li>
585
586 <ul>
587 <li>The current trend</li>
588 <li>The picture illustrates an object modelling with class =&#41;</li>
589 <li>Seriously though...</li>
590 </ul></ul>
591
592 </div>
593 <!-- END slide -->
594
595
596 <!-- BEGIN slide -->
597 <div class="slide">
598 <img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
599 <h1>Modeling OO</h1>
600 <p>
601
602 </p>
603 <ul>
604 <li>High level object meta programming</li>
605 <li>What is a class?</li>
606 </ul>
607 <small>continued...</small>
608
609 </div>
610 <!-- END slide -->
611
612
613 <!-- BEGIN slide -->
614 <div class="slide">
615 <img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
616 <h1>Modeling OO</h1>
617 <p>
618
619 </p>
620 <ul>
621 <li>High level object meta programming</li>
622 <li>What is a class?</li>
623 </ul>
624 <pre class="vim">  class Class {
625     has @isa;
626     has %methods;
627     has %attributes;
628
629     ...
630   }
631 </pre>
632
633 </div>
634 <!-- END slide -->
635
636
637 <!-- BEGIN slide -->
638 <div class="slide">
639 <img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
640 <h1>Modeling OO</h1>
641 <p>
642
643 </p>
644 <small>continued...</small>
645
646 </div>
647 <!-- END slide -->
648
649
650 <!-- BEGIN slide -->
651 <div class="slide">
652 <img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
653 <h1>Modeling OO</h1>
654 <p>
655
656 </p>
657 <ul>
658 <li>Implementing OO</li>
659 </ul>
660 <small>continued...</small>
661
662 </div>
663 <!-- END slide -->
664
665
666 <!-- BEGIN slide -->
667 <div class="slide">
668 <img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
669 <h1>Modeling OO</h1>
670 <p>
671
672 </p>
673 <ul>
674 <li>Implementing OO</li>
675
676 <ul>
677 <li>In OO</li>
678 </ul></ul>
679 <small>continued...</small>
680
681 </div>
682 <!-- END slide -->
683
684
685 <!-- BEGIN slide -->
686 <div class="slide">
687 <img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
688 <h1>Modeling OO</h1>
689 <p>
690
691 </p>
692 <ul>
693 <li>Implementing OO</li>
694
695 <ul>
696 <li>In OO</li>
697 </ul>
698 <li>Meta objects:</li>
699 </ul>
700 <small>continued...</small>
701
702 </div>
703 <!-- END slide -->
704
705
706 <!-- BEGIN slide -->
707 <div class="slide">
708 <img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
709 <h1>Modeling OO</h1>
710 <p>
711
712 </p>
713 <ul>
714 <li>Implementing OO</li>
715
716 <ul>
717 <li>In OO</li>
718 </ul>
719 <li>Meta objects:</li>
720
721 <ul>
722 <li>Class</li>
723 </ul></ul>
724 <small>continued...</small>
725
726 </div>
727 <!-- END slide -->
728
729
730 <!-- BEGIN slide -->
731 <div class="slide">
732 <img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
733 <h1>Modeling OO</h1>
734 <p>
735
736 </p>
737 <ul>
738 <li>Implementing OO</li>
739
740 <ul>
741 <li>In OO</li>
742 </ul>
743 <li>Meta objects:</li>
744
745 <ul>
746 <li>Class</li>
747 <li>Method</li>
748 </ul></ul>
749 <small>continued...</small>
750
751 </div>
752 <!-- END slide -->
753
754
755 <!-- BEGIN slide -->
756 <div class="slide">
757 <img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
758 <h1>Modeling OO</h1>
759 <p>
760
761 </p>
762 <ul>
763 <li>Implementing OO</li>
764
765 <ul>
766 <li>In OO</li>
767 </ul>
768 <li>Meta objects:</li>
769
770 <ul>
771 <li>Class</li>
772 <li>Method</li>
773 <li>Attribute</li>
774 </ul></ul>
775
776 </div>
777 <!-- END slide -->
778
779
780 <!-- BEGIN slide -->
781 <div class="slide">
782
783 <h1>Example class</h1>
784 <pre class="vim">  class Point {
785     has $x;
786     has $y;
787
788     method distance_to { ... }
789   }
790 </pre>
791
792 </div>
793 <!-- END slide -->
794
795
796 <!-- BEGIN slide -->
797 <div class="slide">
798
799 <h1>Modeled with objects</h1>
800 <pre class="vim">  Class-&gt;<span class="synStatement">new</span>(
801     <span class="synConstant">attributes </span>=&gt; [
802       Attribute-&gt;<span class="synStatement">new</span>( <span class="synConstant">name </span>=&gt; <span class="synConstant">'$x'</span> ),
803       Attribute-&gt;<span class="synStatement">new</span>( <span class="synConstant">name </span>=&gt; <span class="synConstant">'$y'</span> ),
804     ],
805     <span class="synConstant">methods </span>=&gt; [
806       Method-&gt;<span class="synStatement">new</span>(
807         <span class="synConstant">name       </span>=&gt; <span class="synConstant">&quot;distance_to&quot;</span>,
808         <span class="synConstant">definition </span>=&gt;<span class="synIdentifier"> </span><span class="synStatement">sub</span><span class="synIdentifier"> </span>{ ... }
809       ),
810     ],
811   );
812 </pre>
813
814 </div>
815 <!-- END slide -->
816
817
818 <!-- BEGIN slide -->
819 <div class="slide">
820 <img name="img" id="img" width="350" src="images/istockphoto_944779_reception_bell.jpg" align=right>
821 <h1>Metamodel Services</h1>
822 <p>
823
824 </p>
825 <small>continued...</small>
826
827 </div>
828 <!-- END slide -->
829
830
831 <!-- BEGIN slide -->
832 <div class="slide">
833 <img name="img" id="img" width="350" src="images/istockphoto_944779_reception_bell.jpg" align=right>
834 <h1>Metamodel Services</h1>
835 <p>
836
837 </p>
838 <ul>
839 <li>Form</li>
840 </ul>
841 <small>continued...</small>
842
843 </div>
844 <!-- END slide -->
845
846
847 <!-- BEGIN slide -->
848 <div class="slide">
849 <img name="img" id="img" width="350" src="images/istockphoto_944779_reception_bell.jpg" align=right>
850 <h1>Metamodel Services</h1>
851 <p>
852
853 </p>
854 <ul>
855 <li>Form</li>
856
857 <ul>
858 <li>Introspection/Reflection</li>
859 </ul></ul>
860 <small>continued...</small>
861
862 </div>
863 <!-- END slide -->
864
865
866 <!-- BEGIN slide -->
867 <div class="slide">
868 <img name="img" id="img" width="350" src="images/istockphoto_944779_reception_bell.jpg" align=right>
869 <h1>Metamodel Services</h1>
870 <p>
871
872 </p>
873 <ul>
874 <li>Form</li>
875
876 <ul>
877 <li>Introspection/Reflection</li>
878 </ul>
879 <li>Function</li>
880 </ul>
881 <small>continued...</small>
882
883 </div>
884 <!-- END slide -->
885
886
887 <!-- BEGIN slide -->
888 <div class="slide">
889 <img name="img" id="img" width="350" src="images/istockphoto_944779_reception_bell.jpg" align=right>
890 <h1>Metamodel Services</h1>
891 <p>
892
893 </p>
894 <ul>
895 <li>Form</li>
896
897 <ul>
898 <li>Introspection/Reflection</li>
899 </ul>
900 <li>Function</li>
901
902 <ul>
903 <li>Class generation</li>
904 </ul></ul>
905 <small>continued...</small>
906
907 </div>
908 <!-- END slide -->
909
910
911 <!-- BEGIN slide -->
912 <div class="slide">
913 <img name="img" id="img" width="350" src="images/istockphoto_944779_reception_bell.jpg" align=right>
914 <h1>Metamodel Services</h1>
915 <p>
916
917 </p>
918 <ul>
919 <li>Form</li>
920
921 <ul>
922 <li>Introspection/Reflection</li>
923 </ul>
924 <li>Function</li>
925
926 <ul>
927 <li>Class generation</li>
928 <li>Class transformation</li>
929 </ul></ul>
930 <small>continued...</small>
931
932 </div>
933 <!-- END slide -->
934
935
936 <!-- BEGIN slide -->
937 <div class="slide">
938 <img name="img" id="img" width="350" src="images/istockphoto_944779_reception_bell.jpg" align=right>
939 <h1>Metamodel Services</h1>
940 <p>
941
942 </p>
943 <ul>
944 <li>Form</li>
945
946 <ul>
947 <li>Introspection/Reflection</li>
948 </ul>
949 <li>Function</li>
950
951 <ul>
952 <li>Class generation</li>
953 <li>Class transformation</li>
954 </ul>
955 <li>Pattern packaging</li>
956 </ul>
957
958 </div>
959 <!-- END slide -->
960
961
962 <!-- BEGIN slide -->
963 <div class="slide">
964 <img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
965 <h1>Case Study</h1>
966 <p>
967
968 </p>
969 <h2>Moose</h2>
970 <small>continued...</small>
971
972 </div>
973 <!-- END slide -->
974
975
976 <!-- BEGIN slide -->
977 <div class="slide">
978 <img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
979 <h1>Case Study</h1>
980 <p>
981
982 </p>
983 <h2>Moose</h2>
984 <ul>
985 <li>A deep meta object system</li>
986 </ul>
987 <small>continued...</small>
988
989 </div>
990 <!-- END slide -->
991
992
993 <!-- BEGIN slide -->
994 <div class="slide">
995 <img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
996 <h1>Case Study</h1>
997 <p>
998
999 </p>
1000 <h2>Moose</h2>
1001 <ul>
1002 <li>A deep meta object system</li>
1003 <li>4 layers deep</li>
1004 </ul>
1005 <small>continued...</small>
1006
1007 </div>
1008 <!-- END slide -->
1009
1010
1011 <!-- BEGIN slide -->
1012 <div class="slide">
1013 <img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
1014 <h1>Case Study</h1>
1015 <p>
1016
1017 </p>
1018 <h2>Moose</h2>
1019 <ul>
1020 <li>A deep meta object system</li>
1021 <li>4 layers deep</li>
1022
1023 <ul>
1024 <li>Syntactic sugar</li>
1025 </ul></ul>
1026 <small>continued...</small>
1027
1028 </div>
1029 <!-- END slide -->
1030
1031
1032 <!-- BEGIN slide -->
1033 <div class="slide">
1034 <img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
1035 <h1>Case Study</h1>
1036 <p>
1037
1038 </p>
1039 <h2>Moose</h2>
1040 <ul>
1041 <li>A deep meta object system</li>
1042 <li>4 layers deep</li>
1043
1044 <ul>
1045 <li>Syntactic sugar</li>
1046 <li>Custom metaclasses</li>
1047 </ul></ul>
1048 <small>continued...</small>
1049
1050 </div>
1051 <!-- END slide -->
1052
1053
1054 <!-- BEGIN slide -->
1055 <div class="slide">
1056 <img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
1057 <h1>Case Study</h1>
1058 <p>
1059
1060 </p>
1061 <h2>Moose</h2>
1062 <ul>
1063 <li>A deep meta object system</li>
1064 <li>4 layers deep</li>
1065
1066 <ul>
1067 <li>Syntactic sugar</li>
1068 <li>Custom metaclasses</li>
1069 <li>Class::MOP</li>
1070 </ul></ul>
1071 <small>continued...</small>
1072
1073 </div>
1074 <!-- END slide -->
1075
1076
1077 <!-- BEGIN slide -->
1078 <div class="slide">
1079 <img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
1080 <h1>Case Study</h1>
1081 <p>
1082
1083 </p>
1084 <h2>Moose</h2>
1085 <ul>
1086 <li>A deep meta object system</li>
1087 <li>4 layers deep</li>
1088
1089 <ul>
1090 <li>Syntactic sugar</li>
1091 <li>Custom metaclasses</li>
1092 <li>Class::MOP</li>
1093 <li>Perl&#39;s native OO</li>
1094 </ul></ul>
1095
1096 </div>
1097 <!-- END slide -->
1098
1099
1100 <!-- BEGIN slide -->
1101 <div class="slide">
1102 <img name="img" id="img" width="350" src="images/perl-camel.gif" align=right>
1103 <h1>Perl's native OO</h1>
1104 <p>
1105
1106 </p>
1107 <small>continued...</small>
1108
1109 </div>
1110 <!-- END slide -->
1111
1112
1113 <!-- BEGIN slide -->
1114 <div class="slide">
1115 <img name="img" id="img" width="350" src="images/perl-camel.gif" align=right>
1116 <h1>Perl's native OO</h1>
1117 <p>
1118
1119 </p>
1120 <ul>
1121 <li>Minimalistic</li>
1122 </ul>
1123 <small>continued...</small>
1124
1125 </div>
1126 <!-- END slide -->
1127
1128
1129 <!-- BEGIN slide -->
1130 <div class="slide">
1131 <img name="img" id="img" width="350" src="images/perl-camel.gif" align=right>
1132 <h1>Perl's native OO</h1>
1133 <p>
1134
1135 </p>
1136 <ul>
1137 <li>Minimalistic</li>
1138
1139 <ul>
1140 <li>Class = Package = Symbol table hash</li>
1141 <li>Inheritence tree embedded in <tt>@ISA</tt> entry</li>
1142 <li><tt>bless</tt> links data to a class</li>
1143 <li><tt>-&gt;</tt></li>
1144 </ul></ul>
1145 <small>continued...</small>
1146
1147 </div>
1148 <!-- END slide -->
1149
1150
1151 <!-- BEGIN slide -->
1152 <div class="slide">
1153 <img name="img" id="img" width="350" src="images/perl-camel.gif" align=right>
1154 <h1>Perl's native OO</h1>
1155 <p>
1156
1157 </p>
1158 <ul>
1159 <li>Minimalistic</li>
1160
1161 <ul>
1162 <li>Class = Package = Symbol table hash</li>
1163 <li>Inheritence tree embedded in <tt>@ISA</tt> entry</li>
1164 <li><tt>bless</tt> links data to a class</li>
1165 <li><tt>-&gt;</tt></li>
1166 </ul>
1167 <li>Insanely flexible</li>
1168 </ul>
1169 <small>continued...</small>
1170
1171 </div>
1172 <!-- END slide -->
1173
1174
1175 <!-- BEGIN slide -->
1176 <div class="slide">
1177 <img name="img" id="img" width="350" src="images/perl-camel.gif" align=right>
1178 <h1>Perl's native OO</h1>
1179 <p>
1180
1181 </p>
1182 <ul>
1183 <li>Minimalistic</li>
1184
1185 <ul>
1186 <li>Class = Package = Symbol table hash</li>
1187 <li>Inheritence tree embedded in <tt>@ISA</tt> entry</li>
1188 <li><tt>bless</tt> links data to a class</li>
1189 <li><tt>-&gt;</tt></li>
1190 </ul>
1191 <li>Insanely flexible</li>
1192 <li>Pretty klunky</li>
1193 </ul>
1194 <small>continued...</small>
1195
1196 </div>
1197 <!-- END slide -->
1198
1199
1200 <!-- BEGIN slide -->
1201 <div class="slide">
1202 <img name="img" id="img" width="350" src="images/perl-camel.gif" align=right>
1203 <h1>Perl's native OO</h1>
1204 <p>
1205
1206 </p>
1207 <ul>
1208 <li>Minimalistic</li>
1209
1210 <ul>
1211 <li>Class = Package = Symbol table hash</li>
1212 <li>Inheritence tree embedded in <tt>@ISA</tt> entry</li>
1213 <li><tt>bless</tt> links data to a class</li>
1214 <li><tt>-&gt;</tt></li>
1215 </ul>
1216 <li>Insanely flexible</li>
1217 <li>Pretty klunky</li>
1218 <li>Written in C &#40;not very accessible&#41;</li>
1219 </ul>
1220
1221 </div>
1222 <!-- END slide -->
1223
1224
1225 <!-- BEGIN slide -->
1226 <div class="slide">
1227 <img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
1228 <h1>Class::MOP</h1>
1229 <p>
1230
1231 </p>
1232 <small>continued...</small>
1233
1234 </div>
1235 <!-- END slide -->
1236
1237
1238 <!-- BEGIN slide -->
1239 <div class="slide">
1240 <img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
1241 <h1>Class::MOP</h1>
1242 <p>
1243
1244 </p>
1245 <ul>
1246 <li>port of CLOS, more or less</li>
1247 </ul>
1248 <small>continued...</small>
1249
1250 </div>
1251 <!-- END slide -->
1252
1253
1254 <!-- BEGIN slide -->
1255 <div class="slide">
1256 <img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
1257 <h1>Class::MOP</h1>
1258 <p>
1259
1260 </p>
1261 <ul>
1262 <li>port of CLOS, more or less</li>
1263 <li>MOP = Meta Object Protocol</li>
1264 </ul>
1265
1266 </div>
1267 <!-- END slide -->
1268
1269
1270 <!-- BEGIN slide -->
1271 <div class="slide">
1272 <img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
1273 <h1>Class::MOP</h1>
1274 <p>
1275
1276 </p>
1277 <small>continued...</small>
1278
1279 </div>
1280 <!-- END slide -->
1281
1282
1283 <!-- BEGIN slide -->
1284 <div class="slide">
1285 <img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
1286 <h1>Class::MOP</h1>
1287 <p>
1288
1289 </p>
1290 <ul>
1291 <li>Model</li>
1292 </ul>
1293 <small>continued...</small>
1294
1295 </div>
1296 <!-- END slide -->
1297
1298
1299 <!-- BEGIN slide -->
1300 <div class="slide">
1301 <img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
1302 <h1>Class::MOP</h1>
1303 <p>
1304
1305 </p>
1306 <ul>
1307 <li>Model</li>
1308
1309 <ul>
1310 <li><tt>Class::MOP::Class</tt></li>
1311 <li><tt>Class::MOP::Method</tt></li>
1312 <li><tt>Class::MOP::Attribute</tt></li>
1313 </ul></ul>
1314 <small>continued...</small>
1315
1316 </div>
1317 <!-- END slide -->
1318
1319
1320 <!-- BEGIN slide -->
1321 <div class="slide">
1322 <img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
1323 <h1>Class::MOP</h1>
1324 <p>
1325
1326 </p>
1327 <ul>
1328 <li>Model</li>
1329
1330 <ul>
1331 <li><tt>Class::MOP::Class</tt></li>
1332 <li><tt>Class::MOP::Method</tt></li>
1333 <li><tt>Class::MOP::Attribute</tt></li>
1334 </ul>
1335 <li>Easy interface</li>
1336 </ul>
1337 <small>continued...</small>
1338
1339 </div>
1340 <!-- END slide -->
1341
1342
1343 <!-- BEGIN slide -->
1344 <div class="slide">
1345 <img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
1346 <h1>Class::MOP</h1>
1347 <p>
1348
1349 </p>
1350 <ul>
1351 <li>Model</li>
1352
1353 <ul>
1354 <li><tt>Class::MOP::Class</tt></li>
1355 <li><tt>Class::MOP::Method</tt></li>
1356 <li><tt>Class::MOP::Attribute</tt></li>
1357 </ul>
1358 <li>Easy interface</li>
1359
1360 <ul>
1361 <li>Introspection</li>
1362 </ul></ul>
1363 <small>continued...</small>
1364
1365 </div>
1366 <!-- END slide -->
1367
1368
1369 <!-- BEGIN slide -->
1370 <div class="slide">
1371 <img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
1372 <h1>Class::MOP</h1>
1373 <p>
1374
1375 </p>
1376 <ul>
1377 <li>Model</li>
1378
1379 <ul>
1380 <li><tt>Class::MOP::Class</tt></li>
1381 <li><tt>Class::MOP::Method</tt></li>
1382 <li><tt>Class::MOP::Attribute</tt></li>
1383 </ul>
1384 <li>Easy interface</li>
1385
1386 <ul>
1387 <li>Introspection</li>
1388 <li>Transformation</li>
1389 </ul></ul>
1390
1391 </div>
1392 <!-- END slide -->
1393
1394
1395 <!-- BEGIN slide -->
1396 <div class="slide">
1397 <img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
1398 <h1>Class::MOP</h1>
1399 <p>
1400
1401 </p>
1402 <small>continued...</small>
1403
1404 </div>
1405 <!-- END slide -->
1406
1407
1408 <!-- BEGIN slide -->
1409 <div class="slide">
1410 <img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
1411 <h1>Class::MOP</h1>
1412 <p>
1413
1414 </p>
1415 <ul>
1416 <li>Can &#34;parse&#34; packages into meta objects</li>
1417 </ul>
1418 <small>continued...</small>
1419
1420 </div>
1421 <!-- END slide -->
1422
1423
1424 <!-- BEGIN slide -->
1425 <div class="slide">
1426 <img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
1427 <h1>Class::MOP</h1>
1428 <p>
1429
1430 </p>
1431 <ul>
1432 <li>Can &#34;parse&#34; packages into meta objects</li>
1433 <li>Modifying the objects writes back to packages</li>
1434 </ul>
1435 <small>continued...</small>
1436
1437 </div>
1438 <!-- END slide -->
1439
1440
1441 <!-- BEGIN slide -->
1442 <div class="slide">
1443 <img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
1444 <h1>Class::MOP</h1>
1445 <p>
1446
1447 </p>
1448 <ul>
1449 <li>Can &#34;parse&#34; packages into meta objects</li>
1450 <li>Modifying the objects writes back to packages</li>
1451 <li>Code generation</li>
1452 </ul>
1453 <small>continued...</small>
1454
1455 </div>
1456 <!-- END slide -->
1457
1458
1459 <!-- BEGIN slide -->
1460 <div class="slide">
1461 <img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
1462 <h1>Class::MOP</h1>
1463 <p>
1464
1465 </p>
1466 <ul>
1467 <li>Can &#34;parse&#34; packages into meta objects</li>
1468 <li>Modifying the objects writes back to packages</li>
1469 <li>Code generation</li>
1470
1471 <ul>
1472 <li>Accessors from attributes</li>
1473 </ul></ul>
1474 <small>continued...</small>
1475
1476 </div>
1477 <!-- END slide -->
1478
1479
1480 <!-- BEGIN slide -->
1481 <div class="slide">
1482 <img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
1483 <h1>Class::MOP</h1>
1484 <p>
1485
1486 </p>
1487 <ul>
1488 <li>Can &#34;parse&#34; packages into meta objects</li>
1489 <li>Modifying the objects writes back to packages</li>
1490 <li>Code generation</li>
1491
1492 <ul>
1493 <li>Accessors from attributes</li>
1494 <li>Constructor from attributes</li>
1495 </ul></ul>
1496 <small>continued...</small>
1497
1498 </div>
1499 <!-- END slide -->
1500
1501
1502 <!-- BEGIN slide -->
1503 <div class="slide">
1504 <img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
1505 <h1>Class::MOP</h1>
1506 <p>
1507
1508 </p>
1509 <ul>
1510 <li>Can &#34;parse&#34; packages into meta objects</li>
1511 <li>Modifying the objects writes back to packages</li>
1512 <li>Code generation</li>
1513
1514 <ul>
1515 <li>Accessors from attributes</li>
1516 <li>Constructor from attributes</li>
1517 <li>Method modifiers</li>
1518 </ul></ul>
1519
1520 </div>
1521 <!-- END slide -->
1522
1523
1524 <!-- BEGIN slide -->
1525 <div class="slide">
1526 <img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
1527 <h1>Moose's custom metaclasses</h1>
1528 <p>
1529
1530 </p>
1531 <small>continued...</small>
1532
1533 </div>
1534 <!-- END slide -->
1535
1536
1537 <!-- BEGIN slide -->
1538 <div class="slide">
1539 <img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
1540 <h1>Moose's custom metaclasses</h1>
1541 <p>
1542
1543 </p>
1544 <ul>
1545 <li>Subclasses of <tt>Class::MOP::Class</tt> et al</li>
1546 </ul>
1547 <small>continued...</small>
1548
1549 </div>
1550 <!-- END slide -->
1551
1552
1553 <!-- BEGIN slide -->
1554 <div class="slide">
1555 <img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
1556 <h1>Moose's custom metaclasses</h1>
1557 <p>
1558
1559 </p>
1560 <ul>
1561 <li>Subclasses of <tt>Class::MOP::Class</tt> et al</li>
1562 <li>More fun features</li>
1563 </ul>
1564 <small>continued...</small>
1565
1566 </div>
1567 <!-- END slide -->
1568
1569
1570 <!-- BEGIN slide -->
1571 <div class="slide">
1572 <img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
1573 <h1>Moose's custom metaclasses</h1>
1574 <p>
1575
1576 </p>
1577 <ul>
1578 <li>Subclasses of <tt>Class::MOP::Class</tt> et al</li>
1579 <li>More fun features</li>
1580
1581 <ul>
1582 <li>Roles</li>
1583 </ul></ul>
1584 <small>continued...</small>
1585
1586 </div>
1587 <!-- END slide -->
1588
1589
1590 <!-- BEGIN slide -->
1591 <div class="slide">
1592 <img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
1593 <h1>Moose's custom metaclasses</h1>
1594 <p>
1595
1596 </p>
1597 <ul>
1598 <li>Subclasses of <tt>Class::MOP::Class</tt> et al</li>
1599 <li>More fun features</li>
1600
1601 <ul>
1602 <li>Roles</li>
1603 <li><tt>BUILD</tt> etc a la Perl 6</li>
1604 </ul></ul>
1605 <small>continued...</small>
1606
1607 </div>
1608 <!-- END slide -->
1609
1610
1611 <!-- BEGIN slide -->
1612 <div class="slide">
1613 <img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
1614 <h1>Moose's custom metaclasses</h1>
1615 <p>
1616
1617 </p>
1618 <ul>
1619 <li>Subclasses of <tt>Class::MOP::Class</tt> et al</li>
1620 <li>More fun features</li>
1621
1622 <ul>
1623 <li>Roles</li>
1624 <li><tt>BUILD</tt> etc a la Perl 6</li>
1625 </ul>
1626 <li>Type constraints</li>
1627 </ul>
1628
1629 </div>
1630 <!-- END slide -->
1631
1632
1633 <!-- BEGIN slide -->
1634 <div class="slide">
1635 <img name="img" id="img" width="350" src="images/sugar.jpg" align=right>
1636 <h1>Moose sugar layer</h1>
1637 <p>
1638
1639 </p>
1640 <small>continued...</small>
1641
1642 </div>
1643 <!-- END slide -->
1644
1645
1646 <!-- BEGIN slide -->
1647 <div class="slide">
1648 <img name="img" id="img" width="350" src="images/sugar.jpg" align=right>
1649 <h1>Moose sugar layer</h1>
1650 <p>
1651
1652 </p>
1653 <ul>
1654 <li>Pseudo-declarative syntax</li>
1655 </ul>
1656 <small>continued...</small>
1657
1658 </div>
1659 <!-- END slide -->
1660
1661
1662 <!-- BEGIN slide -->
1663 <div class="slide">
1664 <img name="img" id="img" width="350" src="images/sugar.jpg" align=right>
1665 <h1>Moose sugar layer</h1>
1666 <p>
1667
1668 </p>
1669 <ul>
1670 <li>Pseudo-declarative syntax</li>
1671 <li>Maps to metaclass manipulations</li>
1672 </ul>
1673 <small>continued...</small>
1674
1675 </div>
1676 <!-- END slide -->
1677
1678
1679 <!-- BEGIN slide -->
1680 <div class="slide">
1681 <img name="img" id="img" width="350" src="images/sugar.jpg" align=right>
1682 <h1>Moose sugar layer</h1>
1683 <p>
1684
1685 </p>
1686 <ul>
1687 <li>Pseudo-declarative syntax</li>
1688 <li>Maps to metaclass manipulations</li>
1689 </ul>
1690 <pre class="vim">  has foo =&gt; ( is =&gt; &quot;rw&quot; );
1691 </pre>
1692 <small>continued...</small>
1693
1694 </div>
1695 <!-- END slide -->
1696
1697
1698 <!-- BEGIN slide -->
1699 <div class="slide">
1700 <img name="img" id="img" width="350" src="images/sugar.jpg" align=right>
1701 <h1>Moose sugar layer</h1>
1702 <p>
1703
1704 </p>
1705 <ul>
1706 <li>Pseudo-declarative syntax</li>
1707 <li>Maps to metaclass manipulations</li>
1708 </ul>
1709 <pre class="vim">  has foo =&gt; ( is =&gt; &quot;rw&quot; );
1710 </pre>
1711 <ul>
1712 <li>becomes</li>
1713 </ul>
1714 <small>continued...</small>
1715
1716 </div>
1717 <!-- END slide -->
1718
1719
1720 <!-- BEGIN slide -->
1721 <div class="slide">
1722 <img name="img" id="img" width="350" src="images/sugar.jpg" align=right>
1723 <h1>Moose sugar layer</h1>
1724 <p>
1725
1726 </p>
1727 <ul>
1728 <li>Pseudo-declarative syntax</li>
1729 <li>Maps to metaclass manipulations</li>
1730 </ul>
1731 <pre class="vim">  has foo =&gt; ( is =&gt; &quot;rw&quot; );
1732 </pre>
1733 <ul>
1734 <li>becomes</li>
1735 </ul>
1736 <pre class="vim">  $metaclass-&gt;add_attribute(
1737     Moose::Meta::Attribute-&gt;new(
1738       foo =&gt; ( is =&gt; &quot;rw&quot; ),
1739     )
1740   );
1741 </pre>
1742
1743 </div>
1744 <!-- END slide -->
1745
1746
1747 <!-- BEGIN slide -->
1748 <div class="slide">
1749 <img name="img" id="img" width="350" src="images/p-seal-at-toronto-zoo.jpg" align=right>
1750 <h1>Moose vs. Class::Accessor</h1>
1751 <p>
1752
1753 </p>
1754 <small>continued...</small>
1755
1756 </div>
1757 <!-- END slide -->
1758
1759
1760 <!-- BEGIN slide -->
1761 <div class="slide">
1762 <img name="img" id="img" width="350" src="images/p-seal-at-toronto-zoo.jpg" align=right>
1763 <h1>Moose vs. Class::Accessor</h1>
1764 <p>
1765
1766 </p>
1767 <ul>
1768 <li>All that bloat just for the <tt>has</tt> syntax?</li>
1769 </ul>
1770 <small>continued...</small>
1771
1772 </div>
1773 <!-- END slide -->
1774
1775
1776 <!-- BEGIN slide -->
1777 <div class="slide">
1778 <img name="img" id="img" width="350" src="images/p-seal-at-toronto-zoo.jpg" align=right>
1779 <h1>Moose vs. Class::Accessor</h1>
1780 <p>
1781
1782 </p>
1783 <ul>
1784 <li>All that bloat just for the <tt>has</tt> syntax?</li>
1785 <li><strong>NO!</strong></li>
1786 </ul>
1787 <small>continued...</small>
1788
1789 </div>
1790 <!-- END slide -->
1791
1792
1793 <!-- BEGIN slide -->
1794 <div class="slide">
1795 <img name="img" id="img" width="350" src="images/p-seal-at-toronto-zoo.jpg" align=right>
1796 <h1>Moose vs. Class::Accessor</h1>
1797 <p>
1798
1799 </p>
1800 <ul>
1801 <li>All that bloat just for the <tt>has</tt> syntax?</li>
1802 <li><strong>NO!</strong></li>
1803 <li>Pattern packaging</li>
1804 </ul>
1805
1806 </div>
1807 <!-- END slide -->
1808
1809
1810 <!-- BEGIN slide -->
1811 <div class="slide">
1812 <img name="img" id="img" width="350" src="images/401.jpg" align=right>
1813 <h1>MooseX::</h1>
1814 <p>
1815
1816 </p>
1817 <small>continued...</small>
1818
1819 </div>
1820 <!-- END slide -->
1821
1822
1823 <!-- BEGIN slide -->
1824 <div class="slide">
1825 <img name="img" id="img" width="350" src="images/401.jpg" align=right>
1826 <h1>MooseX::</h1>
1827 <p>
1828
1829 </p>
1830 <ul>
1831 <li>Packaged meta code</li>
1832 </ul>
1833 <small>continued...</small>
1834
1835 </div>
1836 <!-- END slide -->
1837
1838
1839 <!-- BEGIN slide -->
1840 <div class="slide">
1841 <img name="img" id="img" width="350" src="images/401.jpg" align=right>
1842 <h1>MooseX::</h1>
1843 <p>
1844
1845 </p>
1846 <ul>
1847 <li>Packaged meta code</li>
1848 <li>Pretty clean</li>
1849 </ul>
1850 <small>continued...</small>
1851
1852 </div>
1853 <!-- END slide -->
1854
1855
1856 <!-- BEGIN slide -->
1857 <div class="slide">
1858 <img name="img" id="img" width="350" src="images/401.jpg" align=right>
1859 <h1>MooseX::</h1>
1860 <p>
1861
1862 </p>
1863 <ul>
1864 <li>Packaged meta code</li>
1865 <li>Pretty clean</li>
1866 <li>Mostly composable</li>
1867 </ul>
1868
1869 </div>
1870 <!-- END slide -->
1871
1872
1873 <!-- BEGIN slide -->
1874 <div class="slide">
1875 <img name="img" id="img" width="350" src="images/401.jpg" align=right>
1876 <h1>MooseX::</h1>
1877 <p>
1878
1879 </p>
1880 <small>continued...</small>
1881
1882 </div>
1883 <!-- END slide -->
1884
1885
1886 <!-- BEGIN slide -->
1887 <div class="slide">
1888 <img name="img" id="img" width="350" src="images/401.jpg" align=right>
1889 <h1>MooseX::</h1>
1890 <p>
1891
1892 </p>
1893 <ul>
1894 <li><tt>MooseX::Storage</tt></li>
1895 </ul>
1896 <small>continued...</small>
1897
1898 </div>
1899 <!-- END slide -->
1900
1901
1902 <!-- BEGIN slide -->
1903 <div class="slide">
1904 <img name="img" id="img" width="350" src="images/401.jpg" align=right>
1905 <h1>MooseX::</h1>
1906 <p>
1907
1908 </p>
1909 <ul>
1910 <li><tt>MooseX::Storage</tt></li>
1911
1912 <ul>
1913 <li>Customizable serialization through metaprogramming</li>
1914 </ul></ul>
1915 <small>continued...</small>
1916
1917 </div>
1918 <!-- END slide -->
1919
1920
1921 <!-- BEGIN slide -->
1922 <div class="slide">
1923 <img name="img" id="img" width="350" src="images/401.jpg" align=right>
1924 <h1>MooseX::</h1>
1925 <p>
1926
1927 </p>
1928 <ul>
1929 <li><tt>MooseX::Storage</tt></li>
1930
1931 <ul>
1932 <li>Customizable serialization through metaprogramming</li>
1933 </ul>
1934 <li><tt>MooseX::AttributeHelpers</tt></li>
1935 </ul>
1936 <small>continued...</small>
1937
1938 </div>
1939 <!-- END slide -->
1940
1941
1942 <!-- BEGIN slide -->
1943 <div class="slide">
1944 <img name="img" id="img" width="350" src="images/401.jpg" align=right>
1945 <h1>MooseX::</h1>
1946 <p>
1947
1948 </p>
1949 <ul>
1950 <li><tt>MooseX::Storage</tt></li>
1951
1952 <ul>
1953 <li>Customizable serialization through metaprogramming</li>
1954 </ul>
1955 <li><tt>MooseX::AttributeHelpers</tt></li>
1956
1957 <ul>
1958 <li>Additional methods for collection type attributes</li>
1959 </ul></ul>
1960 <small>continued...</small>
1961
1962 </div>
1963 <!-- END slide -->
1964
1965
1966 <!-- BEGIN slide -->
1967 <div class="slide">
1968 <img name="img" id="img" width="350" src="images/401.jpg" align=right>
1969 <h1>MooseX::</h1>
1970 <p>
1971
1972 </p>
1973 <ul>
1974 <li><tt>MooseX::Storage</tt></li>
1975
1976 <ul>
1977 <li>Customizable serialization through metaprogramming</li>
1978 </ul>
1979 <li><tt>MooseX::AttributeHelpers</tt></li>
1980
1981 <ul>
1982 <li>Additional methods for collection type attributes</li>
1983 </ul>
1984 <li><tt>MooseX::Getopt</tt></li>
1985 </ul>
1986 <small>continued...</small>
1987
1988 </div>
1989 <!-- END slide -->
1990
1991
1992 <!-- BEGIN slide -->
1993 <div class="slide">
1994 <img name="img" id="img" width="350" src="images/401.jpg" align=right>
1995 <h1>MooseX::</h1>
1996 <p>
1997
1998 </p>
1999 <ul>
2000 <li><tt>MooseX::Storage</tt></li>
2001
2002 <ul>
2003 <li>Customizable serialization through metaprogramming</li>
2004 </ul>
2005 <li><tt>MooseX::AttributeHelpers</tt></li>
2006
2007 <ul>
2008 <li>Additional methods for collection type attributes</li>
2009 </ul>
2010 <li><tt>MooseX::Getopt</tt></li>
2011
2012 <ul>
2013 <li>Additional constructor compiles attributes into a <tt>Getopt</tt> spec</li>
2014 </ul></ul>
2015 <small>continued...</small>
2016
2017 </div>
2018 <!-- END slide -->
2019
2020
2021 <!-- BEGIN slide -->
2022 <div class="slide">
2023 <img name="img" id="img" width="350" src="images/401.jpg" align=right>
2024 <h1>MooseX::</h1>
2025 <p>
2026
2027 </p>
2028 <ul>
2029 <li><tt>MooseX::Storage</tt></li>
2030
2031 <ul>
2032 <li>Customizable serialization through metaprogramming</li>
2033 </ul>
2034 <li><tt>MooseX::AttributeHelpers</tt></li>
2035
2036 <ul>
2037 <li>Additional methods for collection type attributes</li>
2038 </ul>
2039 <li><tt>MooseX::Getopt</tt></li>
2040
2041 <ul>
2042 <li>Additional constructor compiles attributes into a <tt>Getopt</tt> spec</li>
2043 </ul>
2044 <li><tt>MooseX::IOC</tt></li>
2045 </ul>
2046 <small>continued...</small>
2047
2048 </div>
2049 <!-- END slide -->
2050
2051
2052 <!-- BEGIN slide -->
2053 <div class="slide">
2054 <img name="img" id="img" width="350" src="images/401.jpg" align=right>
2055 <h1>MooseX::</h1>
2056 <p>
2057
2058 </p>
2059 <ul>
2060 <li><tt>MooseX::Storage</tt></li>
2061
2062 <ul>
2063 <li>Customizable serialization through metaprogramming</li>
2064 </ul>
2065 <li><tt>MooseX::AttributeHelpers</tt></li>
2066
2067 <ul>
2068 <li>Additional methods for collection type attributes</li>
2069 </ul>
2070 <li><tt>MooseX::Getopt</tt></li>
2071
2072 <ul>
2073 <li>Additional constructor compiles attributes into a <tt>Getopt</tt> spec</li>
2074 </ul>
2075 <li><tt>MooseX::IOC</tt></li>
2076
2077 <ul>
2078 <li>Inversion of control integrated into the object system</li>
2079 </ul></ul>
2080
2081 </div>
2082 <!-- END slide -->
2083
2084
2085 <!-- BEGIN slide -->
2086 <div class="slide">
2087 <img name="img" id="img" width="350" src="images/cute_moose.jpg" align=right>
2088 <h1>The point of Moose</h1>
2089 <p>
2090
2091 </p>
2092 <small>continued...</small>
2093
2094 </div>
2095 <!-- END slide -->
2096
2097
2098 <!-- BEGIN slide -->
2099 <div class="slide">
2100 <img name="img" id="img" width="350" src="images/cute_moose.jpg" align=right>
2101 <h1>The point of Moose</h1>
2102 <p>
2103
2104 </p>
2105 <ul>
2106 <li>OO is less tedious</li>
2107 </ul>
2108 <small>continued...</small>
2109
2110 </div>
2111 <!-- END slide -->
2112
2113
2114 <!-- BEGIN slide -->
2115 <div class="slide">
2116 <img name="img" id="img" width="350" src="images/cute_moose.jpg" align=right>
2117 <h1>The point of Moose</h1>
2118 <p>
2119
2120 </p>
2121 <ul>
2122 <li>OO is less tedious</li>
2123 <li>Helps you write meta code</li>
2124 </ul>
2125 <small>continued...</small>
2126
2127 </div>
2128 <!-- END slide -->
2129
2130
2131 <!-- BEGIN slide -->
2132 <div class="slide">
2133 <img name="img" id="img" width="350" src="images/cute_moose.jpg" align=right>
2134 <h1>The point of Moose</h1>
2135 <p>
2136
2137 </p>
2138 <ul>
2139 <li>OO is less tedious</li>
2140 <li>Helps you write meta code</li>
2141
2142 <ul>
2143 <li>Good APIs promote clean code</li>
2144 </ul></ul>
2145 <small>continued...</small>
2146
2147 </div>
2148 <!-- END slide -->
2149
2150
2151 <!-- BEGIN slide -->
2152 <div class="slide">
2153 <img name="img" id="img" width="350" src="images/cute_moose.jpg" align=right>
2154 <h1>The point of Moose</h1>
2155 <p>
2156
2157 </p>
2158 <ul>
2159 <li>OO is less tedious</li>
2160 <li>Helps you write meta code</li>
2161
2162 <ul>
2163 <li>Good APIs promote clean code</li>
2164 <li>Easier to build on existing base</li>
2165 </ul></ul>
2166 <small>continued...</small>
2167
2168 </div>
2169 <!-- END slide -->
2170
2171
2172 <!-- BEGIN slide -->
2173 <div class="slide">
2174 <img name="img" id="img" width="350" src="images/cute_moose.jpg" align=right>
2175 <h1>The point of Moose</h1>
2176 <p>
2177
2178 </p>
2179 <ul>
2180 <li>OO is less tedious</li>
2181 <li>Helps you write meta code</li>
2182
2183 <ul>
2184 <li>Good APIs promote clean code</li>
2185 <li>Easier to build on existing base</li>
2186 <li>Conventions and structure let you play well with others &#40;<tt>MooseX::</tt>&#41;</li>
2187 </ul></ul>
2188 <small>continued...</small>
2189
2190 </div>
2191 <!-- END slide -->
2192
2193
2194 <!-- BEGIN slide -->
2195 <div class="slide">
2196 <img name="img" id="img" width="350" src="images/cute_moose.jpg" align=right>
2197 <h1>The point of Moose</h1>
2198 <p>
2199
2200 </p>
2201 <ul>
2202 <li>OO is less tedious</li>
2203 <li>Helps you write meta code</li>
2204
2205 <ul>
2206 <li>Good APIs promote clean code</li>
2207 <li>Easier to build on existing base</li>
2208 <li>Conventions and structure let you play well with others &#40;<tt>MooseX::</tt>&#41;</li>
2209 <li>Introspectable &#38; tranformable metamodel</li>
2210 </ul></ul>
2211
2212 </div>
2213 <!-- END slide -->
2214
2215
2216 <!-- BEGIN slide -->
2217 <div class="slide">
2218 <img name="img" id="img" width="350" src="images/MainHeaderPic_5.gif" align=right>
2219 <h1>Another Case Study</h1>
2220 <p>
2221
2222 </p>
2223 <h2>ORMs</h2>
2224 <small>continued...</small>
2225
2226 </div>
2227 <!-- END slide -->
2228
2229
2230 <!-- BEGIN slide -->
2231 <div class="slide">
2232 <img name="img" id="img" width="350" src="images/MainHeaderPic_5.gif" align=right>
2233 <h1>Another Case Study</h1>
2234 <p>
2235
2236 </p>
2237 <h2>ORMs</h2>
2238 <ul>
2239 <li>Are <strong>HARD</strong></li>
2240 </ul>
2241 <small>continued...</small>
2242
2243 </div>
2244 <!-- END slide -->
2245
2246
2247 <!-- BEGIN slide -->
2248 <div class="slide">
2249 <img name="img" id="img" width="350" src="images/MainHeaderPic_5.gif" align=right>
2250 <h1>Another Case Study</h1>
2251 <p>
2252
2253 </p>
2254 <h2>ORMs</h2>
2255 <ul>
2256 <li>Are <strong>HARD</strong></li>
2257 <li>Not even fun like the picture</li>
2258 </ul>
2259
2260 </div>
2261 <!-- END slide -->
2262
2263
2264 <!-- BEGIN slide -->
2265 <div class="slide">
2266 <img name="img" id="img" width="350" src="images/legacyDataSources.jpg" align=right>
2267 <h1>ORMs</h1>
2268 <p>
2269
2270 </p>
2271 <small>continued...</small>
2272
2273 </div>
2274 <!-- END slide -->
2275
2276
2277 <!-- BEGIN slide -->
2278 <div class="slide">
2279 <img name="img" id="img" width="350" src="images/legacyDataSources.jpg" align=right>
2280 <h1>ORMs</h1>
2281 <p>
2282
2283 </p>
2284 <ul>
2285 <li>Modeling</li>
2286 </ul>
2287 <small>continued...</small>
2288
2289 </div>
2290 <!-- END slide -->
2291
2292
2293 <!-- BEGIN slide -->
2294 <div class="slide">
2295 <img name="img" id="img" width="350" src="images/legacyDataSources.jpg" align=right>
2296 <h1>ORMs</h1>
2297 <p>
2298
2299 </p>
2300 <ul>
2301 <li>Modeling</li>
2302
2303 <ul>
2304 <li>Tables &lt;-&gt; Classes</li>
2305 </ul></ul>
2306 <small>continued...</small>
2307
2308 </div>
2309 <!-- END slide -->
2310
2311
2312 <!-- BEGIN slide -->
2313 <div class="slide">
2314 <img name="img" id="img" width="350" src="images/legacyDataSources.jpg" align=right>
2315 <h1>ORMs</h1>
2316 <p>
2317
2318 </p>
2319 <ul>
2320 <li>Modeling</li>
2321
2322 <ul>
2323 <li>Tables &lt;-&gt; Classes</li>
2324 <li>Fields &lt;-&gt; Attributes</li>
2325 </ul></ul>
2326 <small>continued...</small>
2327
2328 </div>
2329 <!-- END slide -->
2330
2331
2332 <!-- BEGIN slide -->
2333 <div class="slide">
2334 <img name="img" id="img" width="350" src="images/legacyDataSources.jpg" align=right>
2335 <h1>ORMs</h1>
2336 <p>
2337
2338 </p>
2339 <ul>
2340 <li>Modeling</li>
2341
2342 <ul>
2343 <li>Tables &lt;-&gt; Classes</li>
2344 <li>Fields &lt;-&gt; Attributes</li>
2345 </ul>
2346 <li>Code Generation</li>
2347 </ul>
2348 <small>continued...</small>
2349
2350 </div>
2351 <!-- END slide -->
2352
2353
2354 <!-- BEGIN slide -->
2355 <div class="slide">
2356 <img name="img" id="img" width="350" src="images/legacyDataSources.jpg" align=right>
2357 <h1>ORMs</h1>
2358 <p>
2359
2360 </p>
2361 <ul>
2362 <li>Modeling</li>
2363
2364 <ul>
2365 <li>Tables &lt;-&gt; Classes</li>
2366 <li>Fields &lt;-&gt; Attributes</li>
2367 </ul>
2368 <li>Code Generation</li>
2369
2370 <ul>
2371 <li>SQL</li>
2372 </ul></ul>
2373 <small>continued...</small>
2374
2375 </div>
2376 <!-- END slide -->
2377
2378
2379 <!-- BEGIN slide -->
2380 <div class="slide">
2381 <img name="img" id="img" width="350" src="images/legacyDataSources.jpg" align=right>
2382 <h1>ORMs</h1>
2383 <p>
2384
2385 </p>
2386 <ul>
2387 <li>Modeling</li>
2388
2389 <ul>
2390 <li>Tables &lt;-&gt; Classes</li>
2391 <li>Fields &lt;-&gt; Attributes</li>
2392 </ul>
2393 <li>Code Generation</li>
2394
2395 <ul>
2396 <li>SQL</li>
2397 <li>Accessors</li>
2398 </ul></ul>
2399 <small>continued...</small>
2400
2401 </div>
2402 <!-- END slide -->
2403
2404
2405 <!-- BEGIN slide -->
2406 <div class="slide">
2407 <img name="img" id="img" width="350" src="images/legacyDataSources.jpg" align=right>
2408 <h1>ORMs</h1>
2409 <p>
2410
2411 </p>
2412 <ul>
2413 <li>Modeling</li>
2414
2415 <ul>
2416 <li>Tables &lt;-&gt; Classes</li>
2417 <li>Fields &lt;-&gt; Attributes</li>
2418 </ul>
2419 <li>Code Generation</li>
2420
2421 <ul>
2422 <li>SQL</li>
2423 <li>Accessors</li>
2424 <li>Relationship fetchers</li>
2425 </ul></ul>
2426
2427 </div>
2428 <!-- END slide -->
2429
2430
2431 <!-- BEGIN slide -->
2432 <div class="slide">
2433
2434 <h1><tt>Class::DBI</tt></h1>
2435 <small>continued...</small>
2436
2437 </div>
2438 <!-- END slide -->
2439
2440
2441 <!-- BEGIN slide -->
2442 <div class="slide">
2443
2444 <h1><tt>Class::DBI</tt></h1>
2445 <ul>
2446 <li>Meta code is in the base class</li>
2447 </ul>
2448 <small>continued...</small>
2449
2450 </div>
2451 <!-- END slide -->
2452
2453
2454 <!-- BEGIN slide -->
2455 <div class="slide">
2456
2457 <h1><tt>Class::DBI</tt></h1>
2458 <ul>
2459 <li>Meta code is in the base class</li>
2460 <li>No clear schema modelling</li>
2461 </ul>
2462 <small>continued...</small>
2463
2464 </div>
2465 <!-- END slide -->
2466
2467
2468 <!-- BEGIN slide -->
2469 <div class="slide">
2470
2471 <h1><tt>Class::DBI</tt></h1>
2472 <ul>
2473 <li>Meta code is in the base class</li>
2474 <li>No clear schema modelling</li>
2475 <li>No separation between regular &#38; meta code</li>
2476 </ul>
2477 <small>continued...</small>
2478
2479 </div>
2480 <!-- END slide -->
2481
2482
2483 <!-- BEGIN slide -->
2484 <div class="slide">
2485
2486 <h1><tt>Class::DBI</tt></h1>
2487 <ul>
2488 <li>Meta code is in the base class</li>
2489 <li>No clear schema modelling</li>
2490 <li>No separation between regular &#38; meta code</li>
2491 <li>Lots of hacks</li>
2492 </ul>
2493 <small>continued...</small>
2494
2495 </div>
2496 <!-- END slide -->
2497
2498
2499 <!-- BEGIN slide -->
2500 <div class="slide">
2501
2502 <h1><tt>Class::DBI</tt></h1>
2503 <ul>
2504 <li>Meta code is in the base class</li>
2505 <li>No clear schema modelling</li>
2506 <li>No separation between regular &#38; meta code</li>
2507 <li>Lots of hacks</li>
2508 <li>Don&#39;t go there</li>
2509 </ul>
2510
2511 </div>
2512 <!-- END slide -->
2513
2514
2515 <!-- BEGIN slide -->
2516 <div class="slide">
2517
2518 <h1><tt>DBIx::Class</tt></h1>
2519 <small>continued...</small>
2520
2521 </div>
2522 <!-- END slide -->
2523
2524
2525 <!-- BEGIN slide -->
2526 <div class="slide">
2527
2528 <h1><tt>DBIx::Class</tt></h1>
2529 <ul>
2530 <li>Meta enlightened</li>
2531 </ul>
2532 <small>continued...</small>
2533
2534 </div>
2535 <!-- END slide -->
2536
2537
2538 <!-- BEGIN slide -->
2539 <div class="slide">
2540
2541 <h1><tt>DBIx::Class</tt></h1>
2542 <ul>
2543 <li>Meta enlightened</li>
2544
2545 <ul>
2546 <li>Schema objects fully model the SQL side</li>
2547 </ul></ul>
2548 <small>continued...</small>
2549
2550 </div>
2551 <!-- END slide -->
2552
2553
2554 <!-- BEGIN slide -->
2555 <div class="slide">
2556
2557 <h1><tt>DBIx::Class</tt></h1>
2558 <ul>
2559 <li>Meta enlightened</li>
2560
2561 <ul>
2562 <li>Schema objects fully model the SQL side</li>
2563 <li>ResultSource etc partially model the OO side</li>
2564 </ul></ul>
2565 <small>continued...</small>
2566
2567 </div>
2568 <!-- END slide -->
2569
2570
2571 <!-- BEGIN slide -->
2572 <div class="slide">
2573
2574 <h1><tt>DBIx::Class</tt></h1>
2575 <ul>
2576 <li>Meta enlightened</li>
2577
2578 <ul>
2579 <li>Schema objects fully model the SQL side</li>
2580 <li>ResultSource etc partially model the OO side</li>
2581 <li>Components for everything</li>
2582 </ul></ul>
2583
2584 </div>
2585 <!-- END slide -->
2586
2587
2588 <!-- BEGIN slide -->
2589 <div class="slide">
2590
2591 <h1><tt>DBIx::Class</tt></h1>
2592 <small>continued...</small>
2593
2594 </div>
2595 <!-- END slide -->
2596
2597
2598 <!-- BEGIN slide -->
2599 <div class="slide">
2600
2601 <h1><tt>DBIx::Class</tt></h1>
2602 <ul>
2603 <li>Meta code:</li>
2604 </ul>
2605 <small>continued...</small>
2606
2607 </div>
2608 <!-- END slide -->
2609
2610
2611 <!-- BEGIN slide -->
2612 <div class="slide">
2613
2614 <h1><tt>DBIx::Class</tt></h1>
2615 <ul>
2616 <li>Meta code:</li>
2617
2618 <ul>
2619 <li>Proxy objects</li>
2620 </ul></ul>
2621 <small>continued...</small>
2622
2623 </div>
2624 <!-- END slide -->
2625
2626
2627 <!-- BEGIN slide -->
2628 <div class="slide">
2629
2630 <h1><tt>DBIx::Class</tt></h1>
2631 <ul>
2632 <li>Meta code:</li>
2633
2634 <ul>
2635 <li>Proxy objects</li>
2636 <li>Accessors</li>
2637 </ul></ul>
2638 <small>continued...</small>
2639
2640 </div>
2641 <!-- END slide -->
2642
2643
2644 <!-- BEGIN slide -->
2645 <div class="slide">
2646
2647 <h1><tt>DBIx::Class</tt></h1>
2648 <ul>
2649 <li>Meta code:</li>
2650
2651 <ul>
2652 <li>Proxy objects</li>
2653 <li>Accessors</li>
2654 <li>Code generation &#40;SQL, Perl&#41;</li>
2655 </ul></ul>
2656
2657 </div>
2658 <!-- END slide -->
2659
2660
2661 <!-- BEGIN slide -->
2662 <div class="slide">
2663
2664 <h1>ORM related meta programming</h1>
2665 <small>continued...</small>
2666
2667 </div>
2668 <!-- END slide -->
2669
2670
2671 <!-- BEGIN slide -->
2672 <div class="slide">
2673
2674 <h1>ORM related meta programming</h1>
2675 <ul>
2676 <li>Complex</li>
2677 </ul>
2678 <small>continued...</small>
2679
2680 </div>
2681 <!-- END slide -->
2682
2683
2684 <!-- BEGIN slide -->
2685 <div class="slide">
2686
2687 <h1>ORM related meta programming</h1>
2688 <ul>
2689 <li>Complex</li>
2690 <li>But manageable</li>
2691 </ul>
2692
2693 </div>
2694 <!-- END slide -->
2695
2696
2697 <!-- BEGIN slide -->
2698 <div class="slide">
2699 <img name="img" id="img" width="350" src="images/b-silencer-water-vapour.jpg" align=right>
2700 <h1>Vaporware</h1>
2701 <p>
2702
2703 </p>
2704
2705 </div>
2706 <!-- END slide -->
2707
2708
2709 <!-- BEGIN slide -->
2710 <div class="slide">
2711 <img name="img" id="img" width="350" src="images/b-silencer-water-vapour.jpg" align=right>
2712 <h1>MO</h1>
2713 <p>
2714
2715 </p>
2716 <small>continued...</small>
2717
2718 </div>
2719 <!-- END slide -->
2720
2721
2722 <!-- BEGIN slide -->
2723 <div class="slide">
2724 <img name="img" id="img" width="350" src="images/b-silencer-water-vapour.jpg" align=right>
2725 <h1>MO</h1>
2726 <p>
2727
2728 </p>
2729 <ul>
2730 <li>My baby</li>
2731 </ul>
2732 <small>continued...</small>
2733
2734 </div>
2735 <!-- END slide -->
2736
2737
2738 <!-- BEGIN slide -->
2739 <div class="slide">
2740 <img name="img" id="img" width="350" src="images/b-silencer-water-vapour.jpg" align=right>
2741 <h1>MO</h1>
2742 <p>
2743
2744 </p>
2745 <ul>
2746 <li>My baby</li>
2747 <li>Moose spinoff</li>
2748 </ul>
2749 <small>continued...</small>
2750
2751 </div>
2752 <!-- END slide -->
2753
2754
2755 <!-- BEGIN slide -->
2756 <div class="slide">
2757 <img name="img" id="img" width="350" src="images/b-silencer-water-vapour.jpg" align=right>
2758 <h1>MO</h1>
2759 <p>
2760
2761 </p>
2762 <ul>
2763 <li>My baby</li>
2764 <li>Moose spinoff</li>
2765
2766 <ul>
2767 <li>Stevan says it&#39;s Moose 2.0&#39;s</li>
2768 </ul></ul>
2769 <small>continued...</small>
2770
2771 </div>
2772 <!-- END slide -->
2773
2774
2775 <!-- BEGIN slide -->
2776 <div class="slide">
2777 <img name="img" id="img" width="350" src="images/b-silencer-water-vapour.jpg" align=right>
2778 <h1>MO</h1>
2779 <p>
2780
2781 </p>
2782 <ul>
2783 <li>My baby</li>
2784 <li>Moose spinoff</li>
2785
2786 <ul>
2787 <li>Stevan says it&#39;s Moose 2.0&#39;s</li>
2788 </ul>
2789 <li>Perl 5 &#38; Haskell &#40;in pugs&#41;</li>
2790 </ul>
2791
2792 </div>
2793 <!-- END slide -->
2794
2795
2796 <!-- BEGIN slide -->
2797 <div class="slide">
2798 <img name="img" id="img" width="350" src="images/lollypop.jpg" align=right>
2799 <h1>MO Sucks</h1>
2800 <p>
2801
2802 </p>
2803 <small>continued...</small>
2804
2805 </div>
2806 <!-- END slide -->
2807
2808
2809 <!-- BEGIN slide -->
2810 <div class="slide">
2811 <img name="img" id="img" width="350" src="images/lollypop.jpg" align=right>
2812 <h1>MO Sucks</h1>
2813 <p>
2814
2815 </p>
2816 <ul>
2817 <li>Experimental code</li>
2818 </ul>
2819 <small>continued...</small>
2820
2821 </div>
2822 <!-- END slide -->
2823
2824
2825 <!-- BEGIN slide -->
2826 <div class="slide">
2827 <img name="img" id="img" width="350" src="images/lollypop.jpg" align=right>
2828 <h1>MO Sucks</h1>
2829 <p>
2830
2831 </p>
2832 <ul>
2833 <li>Experimental code</li>
2834 <li>Boring parts messy or unwritten</li>
2835 </ul>
2836 <small>continued...</small>
2837
2838 </div>
2839 <!-- END slide -->
2840
2841
2842 <!-- BEGIN slide -->
2843 <div class="slide">
2844 <img name="img" id="img" width="350" src="images/lollypop.jpg" align=right>
2845 <h1>MO Sucks</h1>
2846 <p>
2847
2848 </p>
2849 <ul>
2850 <li>Experimental code</li>
2851 <li>Boring parts messy or unwritten</li>
2852 <li>Lacking integration, sugar layer</li>
2853 </ul>
2854 <small>continued...</small>
2855
2856 </div>
2857 <!-- END slide -->
2858
2859
2860 <!-- BEGIN slide -->
2861 <div class="slide">
2862 <img name="img" id="img" width="350" src="images/lollypop.jpg" align=right>
2863 <h1>MO Sucks</h1>
2864 <p>
2865
2866 </p>
2867 <ul>
2868 <li>Experimental code</li>
2869 <li>Boring parts messy or unwritten</li>
2870 <li>Lacking integration, sugar layer</li>
2871
2872 <ul>
2873 <li>mst promised to help ;-&#41;</li>
2874 </ul></ul>
2875 <small>continued...</small>
2876
2877 </div>
2878 <!-- END slide -->
2879
2880
2881 <!-- BEGIN slide -->
2882 <div class="slide">
2883 <img name="img" id="img" width="350" src="images/lollypop.jpg" align=right>
2884 <h1>MO Sucks</h1>
2885 <p>
2886
2887 </p>
2888 <ul>
2889 <li>Experimental code</li>
2890 <li>Boring parts messy or unwritten</li>
2891 <li>Lacking integration, sugar layer</li>
2892
2893 <ul>
2894 <li>mst promised to help ;-&#41;</li>
2895 </ul>
2896 <li>Some parts slow as $*!&#38;%</li>
2897 </ul>
2898
2899 </div>
2900 <!-- END slide -->
2901
2902
2903 <!-- BEGIN slide -->
2904 <div class="slide">
2905 <img name="img" id="img" width="350" src="images/rocks.jpg" align=right>
2906 <h1>MO Rocks</h1>
2907 <p>
2908
2909 </p>
2910 <small>continued...</small>
2911
2912 </div>
2913 <!-- END slide -->
2914
2915
2916 <!-- BEGIN slide -->
2917 <div class="slide">
2918 <img name="img" id="img" width="350" src="images/rocks.jpg" align=right>
2919 <h1>MO Rocks</h1>
2920 <p>
2921
2922 </p>
2923 <ul>
2924 <li>Purely functional</li>
2925 </ul>
2926 <small>continued...</small>
2927
2928 </div>
2929 <!-- END slide -->
2930
2931
2932 <!-- BEGIN slide -->
2933 <div class="slide">
2934 <img name="img" id="img" width="350" src="images/rocks.jpg" align=right>
2935 <h1>MO Rocks</h1>
2936 <p>
2937
2938 </p>
2939 <ul>
2940 <li>Purely functional</li>
2941 <li>Very suited for meta transformations</li>
2942 </ul>
2943 <small>continued...</small>
2944
2945 </div>
2946 <!-- END slide -->
2947
2948
2949 <!-- BEGIN slide -->
2950 <div class="slide">
2951 <img name="img" id="img" width="350" src="images/rocks.jpg" align=right>
2952 <h1>MO Rocks</h1>
2953 <p>
2954
2955 </p>
2956 <ul>
2957 <li>Purely functional</li>
2958 <li>Very suited for meta transformations</li>
2959 <li>Fine grained control over everything</li>
2960 </ul>
2961 <small>continued...</small>
2962
2963 </div>
2964 <!-- END slide -->
2965
2966
2967 <!-- BEGIN slide -->
2968 <div class="slide">
2969 <img name="img" id="img" width="350" src="images/rocks.jpg" align=right>
2970 <h1>MO Rocks</h1>
2971 <p>
2972
2973 </p>
2974 <ul>
2975 <li>Purely functional</li>
2976 <li>Very suited for meta transformations</li>
2977 <li>Fine grained control over everything</li>
2978 <li>Can introduce entirely new conceptions of OO</li>
2979 </ul>
2980
2981 </div>
2982 <!-- END slide -->
2983
2984
2985 <!-- BEGIN slide -->
2986 <div class="slide">
2987 <img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
2988 <h1>MO Architechture</h1>
2989 <p>
2990
2991 </p>
2992 <small>continued...</small>
2993
2994 </div>
2995 <!-- END slide -->
2996
2997
2998 <!-- BEGIN slide -->
2999 <div class="slide">
3000 <img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
3001 <h1>MO Architechture</h1>
3002 <p>
3003
3004 </p>
3005 <ul>
3006 <li>Modeling layer</li>
3007 </ul>
3008 <small>continued...</small>
3009
3010 </div>
3011 <!-- END slide -->
3012
3013
3014 <!-- BEGIN slide -->
3015 <div class="slide">
3016 <img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
3017 <h1>MO Architechture</h1>
3018 <p>
3019
3020 </p>
3021 <ul>
3022 <li>Modeling layer</li>
3023
3024 <ul>
3025 <li>Corresponds to compilation</li>
3026 </ul></ul>
3027 <small>continued...</small>
3028
3029 </div>
3030 <!-- END slide -->
3031
3032
3033 <!-- BEGIN slide -->
3034 <div class="slide">
3035 <img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
3036 <h1>MO Architechture</h1>
3037 <p>
3038
3039 </p>
3040 <ul>
3041 <li>Modeling layer</li>
3042
3043 <ul>
3044 <li>Corresponds to compilation</li>
3045 </ul>
3046 <li>Responder layer</li>
3047 </ul>
3048 <small>continued...</small>
3049
3050 </div>
3051 <!-- END slide -->
3052
3053
3054 <!-- BEGIN slide -->
3055 <div class="slide">
3056 <img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
3057 <h1>MO Architechture</h1>
3058 <p>
3059
3060 </p>
3061 <ul>
3062 <li>Modeling layer</li>
3063
3064 <ul>
3065 <li>Corresponds to compilation</li>
3066 </ul>
3067 <li>Responder layer</li>
3068
3069 <ul>
3070 <li>Corresponds to runtime</li>
3071 </ul></ul>
3072
3073 </div>
3074 <!-- END slide -->
3075
3076
3077 <!-- BEGIN slide -->
3078 <div class="slide">
3079 <img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
3080 <h1>MO Architechture</h1>
3081 <p>
3082
3083 </p>
3084 <small>continued...</small>
3085
3086 </div>
3087 <!-- END slide -->
3088
3089
3090 <!-- BEGIN slide -->
3091 <div class="slide">
3092 <img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
3093 <h1>MO Architechture</h1>
3094 <p>
3095
3096 </p>
3097 <ul>
3098 <li>Compiler/sugar layer creates the modeling layer</li>
3099 </ul>
3100 <small>continued...</small>
3101
3102 </div>
3103 <!-- END slide -->
3104
3105
3106 <!-- BEGIN slide -->
3107 <div class="slide">
3108 <img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
3109 <h1>MO Architechture</h1>
3110 <p>
3111
3112 </p>
3113 <ul>
3114 <li>Compiler/sugar layer creates the modeling layer</li>
3115
3116 <ul>
3117 <li>Class objects are constructed, with all the details</li>
3118 </ul></ul>
3119 <small>continued...</small>
3120
3121 </div>
3122 <!-- END slide -->
3123
3124
3125 <!-- BEGIN slide -->
3126 <div class="slide">
3127 <img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
3128 <h1>MO Architechture</h1>
3129 <p>
3130
3131 </p>
3132 <ul>
3133 <li>Compiler/sugar layer creates the modeling layer</li>
3134
3135 <ul>
3136 <li>Class objects are constructed, with all the details</li>
3137 <li>No meta calculations happen yet</li>
3138 </ul></ul>
3139 <small>continued...</small>
3140
3141 </div>
3142 <!-- END slide -->
3143
3144
3145 <!-- BEGIN slide -->
3146 <div class="slide">
3147 <img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
3148 <h1>MO Architechture</h1>
3149 <p>
3150
3151 </p>
3152 <ul>
3153 <li>Compiler/sugar layer creates the modeling layer</li>
3154
3155 <ul>
3156 <li>Class objects are constructed, with all the details</li>
3157 <li>No meta calculations happen yet</li>
3158 </ul>
3159 <li>Modeling layer is &#34;compiled&#34; into responder layer</li>
3160 </ul>
3161 <small>continued...</small>
3162
3163 </div>
3164 <!-- END slide -->
3165
3166
3167 <!-- BEGIN slide -->
3168 <div class="slide">
3169 <img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
3170 <h1>MO Architechture</h1>
3171 <p>
3172
3173 </p>
3174 <ul>
3175 <li>Compiler/sugar layer creates the modeling layer</li>
3176
3177 <ul>
3178 <li>Class objects are constructed, with all the details</li>
3179 <li>No meta calculations happen yet</li>
3180 </ul>
3181 <li>Modeling layer is &#34;compiled&#34; into responder layer</li>
3182
3183 <ul>
3184 <li>Can be done on demand or upfront</li>
3185 </ul></ul>
3186 <small>continued...</small>
3187
3188 </div>
3189 <!-- END slide -->
3190
3191
3192 <!-- BEGIN slide -->
3193 <div class="slide">
3194 <img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
3195 <h1>MO Architechture</h1>
3196 <p>
3197
3198 </p>
3199 <ul>
3200 <li>Compiler/sugar layer creates the modeling layer</li>
3201
3202 <ul>
3203 <li>Class objects are constructed, with all the details</li>
3204 <li>No meta calculations happen yet</li>
3205 </ul>
3206 <li>Modeling layer is &#34;compiled&#34; into responder layer</li>
3207
3208 <ul>
3209 <li>Can be done on demand or upfront</li>
3210 </ul>
3211 <li>Obscurely named objects</li>
3212 </ul>
3213 <small>continued...</small>
3214
3215 </div>
3216 <!-- END slide -->
3217
3218
3219 <!-- BEGIN slide -->
3220 <div class="slide">
3221 <img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
3222 <h1>MO Architechture</h1>
3223 <p>
3224
3225 </p>
3226 <ul>
3227 <li>Compiler/sugar layer creates the modeling layer</li>
3228
3229 <ul>
3230 <li>Class objects are constructed, with all the details</li>
3231 <li>No meta calculations happen yet</li>
3232 </ul>
3233 <li>Modeling layer is &#34;compiled&#34; into responder layer</li>
3234
3235 <ul>
3236 <li>Can be done on demand or upfront</li>
3237 </ul>
3238 <li>Obscurely named objects</li>
3239
3240 <ul>
3241 <li>Bear with me</li>
3242 </ul></ul>
3243
3244 </div>
3245 <!-- END slide -->
3246
3247
3248 <!-- BEGIN slide -->
3249 <div class="slide">
3250 <img name="img" id="img" width="350" src="images/light-bulb-glowing-filament-light-blue-uncropped-lores-3-AHD.jpg" align=right>
3251 <h1>"Concepts"</h1>
3252 <p>
3253
3254 </p>
3255 <small>continued...</small>
3256
3257 </div>
3258 <!-- END slide -->
3259
3260
3261 <!-- BEGIN slide -->
3262 <div class="slide">
3263 <img name="img" id="img" width="350" src="images/light-bulb-glowing-filament-light-blue-uncropped-lores-3-AHD.jpg" align=right>
3264 <h1>"Concepts"</h1>
3265 <p>
3266
3267 </p>
3268 <ul>
3269 <li>The purest form of OO is prototypes</li>
3270 </ul>
3271 <small>continued...</small>
3272
3273 </div>
3274 <!-- END slide -->
3275
3276
3277 <!-- BEGIN slide -->
3278 <div class="slide">
3279 <img name="img" id="img" width="350" src="images/light-bulb-glowing-filament-light-blue-uncropped-lores-3-AHD.jpg" align=right>
3280 <h1>"Concepts"</h1>
3281 <p>
3282
3283 </p>
3284 <ul>
3285 <li>The purest form of OO is prototypes</li>
3286
3287 <ul>
3288 <li>prototype OO can implement class OO</li>
3289 </ul></ul>
3290 <small>continued...</small>
3291
3292 </div>
3293 <!-- END slide -->
3294
3295
3296 <!-- BEGIN slide -->
3297 <div class="slide">
3298 <img name="img" id="img" width="350" src="images/light-bulb-glowing-filament-light-blue-uncropped-lores-3-AHD.jpg" align=right>
3299 <h1>"Concepts"</h1>
3300 <p>
3301
3302 </p>
3303 <ul>
3304 <li>The purest form of OO is prototypes</li>
3305
3306 <ul>
3307 <li>prototype OO can implement class OO</li>
3308 </ul>
3309 <li>Concepts are new ways to express objects</li>
3310 </ul>
3311 <small>continued...</small>
3312
3313 </div>
3314 <!-- END slide -->
3315
3316
3317 <!-- BEGIN slide -->
3318 <div class="slide">
3319 <img name="img" id="img" width="350" src="images/light-bulb-glowing-filament-light-blue-uncropped-lores-3-AHD.jpg" align=right>
3320 <h1>"Concepts"</h1>
3321 <p>
3322
3323 </p>
3324 <ul>
3325 <li>The purest form of OO is prototypes</li>
3326
3327 <ul>
3328 <li>prototype OO can implement class OO</li>
3329 </ul>
3330 <li>Concepts are new ways to express objects</li>
3331 <li>A class is a concept</li>
3332 </ul>
3333 <small>continued...</small>
3334
3335 </div>
3336 <!-- END slide -->
3337
3338
3339 <!-- BEGIN slide -->
3340 <div class="slide">
3341 <img name="img" id="img" width="350" src="images/light-bulb-glowing-filament-light-blue-uncropped-lores-3-AHD.jpg" align=right>
3342 <h1>"Concepts"</h1>
3343 <p>
3344
3345 </p>
3346 <ul>
3347 <li>The purest form of OO is prototypes</li>
3348
3349 <ul>
3350 <li>prototype OO can implement class OO</li>
3351 </ul>
3352 <li>Concepts are new ways to express objects</li>
3353 <li>A class is a concept</li>
3354 <li>A role is a concept</li>
3355 </ul>
3356
3357 </div>
3358 <!-- END slide -->
3359
3360
3361 <!-- BEGIN slide -->
3362 <div class="slide">
3363 <img name="img" id="img" width="350" src="images/vtable.jpg" align=right>
3364 <h1>"Responder Interfaces"</h1>
3365 <p>
3366
3367 </p>
3368 <small>continued...</small>
3369
3370 </div>
3371 <!-- END slide -->
3372
3373
3374 <!-- BEGIN slide -->
3375 <div class="slide">
3376 <img name="img" id="img" width="350" src="images/vtable.jpg" align=right>
3377 <h1>"Responder Interfaces"</h1>
3378 <p>
3379
3380 </p>
3381 <ul>
3382 <li><tt>$ri-&gt;dispatch&#40; $responder, $invocation &#41;</tt></li>
3383 </ul>
3384 <small>continued...</small>
3385
3386 </div>
3387 <!-- END slide -->
3388
3389
3390 <!-- BEGIN slide -->
3391 <div class="slide">
3392 <img name="img" id="img" width="350" src="images/vtable.jpg" align=right>
3393 <h1>"Responder Interfaces"</h1>
3394 <p>
3395
3396 </p>
3397 <ul>
3398 <li><tt>$ri-&gt;dispatch&#40; $responder, $invocation &#41;</tt></li>
3399 <li>Generated from concepts</li>
3400 </ul>
3401 <small>continued...</small>
3402
3403 </div>
3404 <!-- END slide -->
3405
3406
3407 <!-- BEGIN slide -->
3408 <div class="slide">
3409 <img name="img" id="img" width="350" src="images/vtable.jpg" align=right>
3410 <h1>"Responder Interfaces"</h1>
3411 <p>
3412
3413 </p>
3414 <ul>
3415 <li><tt>$ri-&gt;dispatch&#40; $responder, $invocation &#41;</tt></li>
3416 <li>Generated from concepts</li>
3417 <li>Abstract VTable</li>
3418 </ul>
3419 <small>continued...</small>
3420
3421 </div>
3422 <!-- END slide -->
3423
3424
3425 <!-- BEGIN slide -->
3426 <div class="slide">
3427 <img name="img" id="img" width="350" src="images/vtable.jpg" align=right>
3428 <h1>"Responder Interfaces"</h1>
3429 <p>
3430
3431 </p>
3432 <ul>
3433 <li><tt>$ri-&gt;dispatch&#40; $responder, $invocation &#41;</tt></li>
3434 <li>Generated from concepts</li>
3435 <li>Abstract VTable</li>
3436
3437 <ul>
3438 <li>The flattened method hierarchy</li>
3439 </ul></ul>
3440 <small>continued...</small>
3441
3442 </div>
3443 <!-- END slide -->
3444
3445
3446 <!-- BEGIN slide -->
3447 <div class="slide">
3448 <img name="img" id="img" width="350" src="images/vtable.jpg" align=right>
3449 <h1>"Responder Interfaces"</h1>
3450 <p>
3451
3452 </p>
3453 <ul>
3454 <li><tt>$ri-&gt;dispatch&#40; $responder, $invocation &#41;</tt></li>
3455 <li>Generated from concepts</li>
3456 <li>Abstract VTable</li>
3457
3458 <ul>
3459 <li>The flattened method hierarchy</li>
3460 <li>... or something completely different</li>
3461 </ul></ul>
3462 <small>continued...</small>
3463
3464 </div>
3465 <!-- END slide -->
3466
3467
3468 <!-- BEGIN slide -->
3469 <div class="slide">
3470 <img name="img" id="img" width="350" src="images/vtable.jpg" align=right>
3471 <h1>"Responder Interfaces"</h1>
3472 <p>
3473
3474 </p>
3475 <ul>
3476 <li><tt>$ri-&gt;dispatch&#40; $responder, $invocation &#41;</tt></li>
3477 <li>Generated from concepts</li>
3478 <li>Abstract VTable</li>
3479
3480 <ul>
3481 <li>The flattened method hierarchy</li>
3482 <li>... or something completely different</li>
3483 <li>Performance</li>
3484 </ul></ul>
3485 <small>continued...</small>
3486
3487 </div>
3488 <!-- END slide -->
3489
3490
3491 <!-- BEGIN slide -->
3492 <div class="slide">
3493 <img name="img" id="img" width="350" src="images/vtable.jpg" align=right>
3494 <h1>"Responder Interfaces"</h1>
3495 <p>
3496
3497 </p>
3498 <ul>
3499 <li><tt>$ri-&gt;dispatch&#40; $responder, $invocation &#41;</tt></li>
3500 <li>Generated from concepts</li>
3501 <li>Abstract VTable</li>
3502
3503 <ul>
3504 <li>The flattened method hierarchy</li>
3505 <li>... or something completely different</li>
3506 <li>Performance</li>
3507 <li>Flexibility</li>
3508 </ul></ul>
3509
3510 </div>
3511 <!-- END slide -->
3512
3513
3514 <!-- BEGIN slide -->
3515 <div class="slide">
3516 <img name="img" id="img" width="350" src="images/fema_seal.gif" align=right>
3517 <h1>"Responders"</h1>
3518 <p>
3519
3520 </p>
3521 <small>continued...</small>
3522
3523 </div>
3524 <!-- END slide -->
3525
3526
3527 <!-- BEGIN slide -->
3528 <div class="slide">
3529 <img name="img" id="img" width="350" src="images/fema_seal.gif" align=right>
3530 <h1>"Responders"</h1>
3531 <p>
3532
3533 </p>
3534 <ul>
3535 <li>Something that is the subject of invocations</li>
3536 </ul>
3537 <small>continued...</small>
3538
3539 </div>
3540 <!-- END slide -->
3541
3542
3543 <!-- BEGIN slide -->
3544 <div class="slide">
3545 <img name="img" id="img" width="350" src="images/fema_seal.gif" align=right>
3546 <h1>"Responders"</h1>
3547 <p>
3548
3549 </p>
3550 <ul>
3551 <li>Something that is the subject of invocations</li>
3552
3553 <ul>
3554 <li>An object instance</li>
3555 </ul></ul>
3556 <small>continued...</small>
3557
3558 </div>
3559 <!-- END slide -->
3560
3561
3562 <!-- BEGIN slide -->
3563 <div class="slide">
3564 <img name="img" id="img" width="350" src="images/fema_seal.gif" align=right>
3565 <h1>"Responders"</h1>
3566 <p>
3567
3568 </p>
3569 <ul>
3570 <li>Something that is the subject of invocations</li>
3571
3572 <ul>
3573 <li>An object instance</li>
3574 <li>A class &#40;class methods&#41;</li>
3575 </ul></ul>
3576 <small>continued...</small>
3577
3578 </div>
3579 <!-- END slide -->
3580
3581
3582 <!-- BEGIN slide -->
3583 <div class="slide">
3584 <img name="img" id="img" width="350" src="images/fema_seal.gif" align=right>
3585 <h1>"Responders"</h1>
3586 <p>
3587
3588 </p>
3589 <ul>
3590 <li>Something that is the subject of invocations</li>
3591
3592 <ul>
3593 <li>An object instance</li>
3594 <li>A class &#40;class methods&#41;</li>
3595 </ul>
3596 <li>A simple tuple <tt>&#40; $data, $ri &#41;</tt></li>
3597 </ul>
3598
3599 </div>
3600 <!-- END slide -->
3601
3602
3603 <!-- BEGIN slide -->
3604 <div class="slide">
3605 <img name="img" id="img" width="350" src="images/lg-banana.jpg" align=right>
3606 <h1>"Invocations"</h1>
3607 <p>
3608
3609 </p>
3610 <small>continued...</small>
3611
3612 </div>
3613 <!-- END slide -->
3614
3615
3616 <!-- BEGIN slide -->
3617 <div class="slide">
3618 <img name="img" id="img" width="350" src="images/lg-banana.jpg" align=right>
3619 <h1>"Invocations"</h1>
3620 <p>
3621
3622 </p>
3623 <ul>
3624 <li>A method call, multimethod, message... whatever</li>
3625 </ul>
3626 <small>continued...</small>
3627
3628 </div>
3629 <!-- END slide -->
3630
3631
3632 <!-- BEGIN slide -->
3633 <div class="slide">
3634 <img name="img" id="img" width="350" src="images/lg-banana.jpg" align=right>
3635 <h1>"Invocations"</h1>
3636 <p>
3637
3638 </p>
3639 <ul>
3640 <li>A method call, multimethod, message... whatever</li>
3641
3642 <ul>
3643 <li>Arguments, too</li>
3644 </ul></ul>
3645 <small>continued...</small>
3646
3647 </div>
3648 <!-- END slide -->
3649
3650
3651 <!-- BEGIN slide -->
3652 <div class="slide">
3653 <img name="img" id="img" width="350" src="images/lg-banana.jpg" align=right>
3654 <h1>"Invocations"</h1>
3655 <p>
3656
3657 </p>
3658 <ul>
3659 <li>A method call, multimethod, message... whatever</li>
3660
3661 <ul>
3662 <li>Arguments, too</li>
3663 </ul>
3664 <li>Whatever an RI will put up with</li>
3665 </ul>
3666 <small>continued...</small>
3667
3668 </div>
3669 <!-- END slide -->
3670
3671
3672 <!-- BEGIN slide -->
3673 <div class="slide">
3674 <img name="img" id="img" width="350" src="images/lg-banana.jpg" align=right>
3675 <h1>"Invocations"</h1>
3676 <p>
3677
3678 </p>
3679 <ul>
3680 <li>A method call, multimethod, message... whatever</li>
3681
3682 <ul>
3683 <li>Arguments, too</li>
3684 </ul>
3685 <li>Whatever an RI will put up with</li>
3686
3687 <ul>
3688 <li>Extensible calling semantics</li>
3689 </ul></ul>
3690
3691 </div>
3692 <!-- END slide -->
3693
3694
3695 <!-- BEGIN slide -->
3696 <div class="slide">
3697 <img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
3698 <h1>MO compilation flow</h1>
3699 <p>
3700
3701 </p>
3702 <small>continued...</small>
3703
3704 </div>
3705 <!-- END slide -->
3706
3707
3708 <!-- BEGIN slide -->
3709 <div class="slide">
3710 <img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
3711 <h1>MO compilation flow</h1>
3712 <p>
3713
3714 </p>
3715 <ul>
3716 <li>Instantiate a <tt>Class</tt> object</li>
3717 </ul>
3718 <small>continued...</small>
3719
3720 </div>
3721 <!-- END slide -->
3722
3723
3724 <!-- BEGIN slide -->
3725 <div class="slide">
3726 <img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
3727 <h1>MO compilation flow</h1>
3728 <p>
3729
3730 </p>
3731 <ul>
3732 <li>Instantiate a <tt>Class</tt> object</li>
3733
3734 <ul>
3735 <li>Specify members &#40;methods, attributes&#41;</li>
3736 </ul></ul>
3737 <small>continued...</small>
3738
3739 </div>
3740 <!-- END slide -->
3741
3742
3743 <!-- BEGIN slide -->
3744 <div class="slide">
3745 <img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
3746 <h1>MO compilation flow</h1>
3747 <p>
3748
3749 </p>
3750 <ul>
3751 <li>Instantiate a <tt>Class</tt> object</li>
3752
3753 <ul>
3754 <li>Specify members &#40;methods, attributes&#41;</li>
3755 <li>... and ancestor classes &#38; roles</li>
3756 </ul></ul>
3757 <small>continued...</small>
3758
3759 </div>
3760 <!-- END slide -->
3761
3762
3763 <!-- BEGIN slide -->
3764 <div class="slide">
3765 <img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
3766 <h1>MO compilation flow</h1>
3767 <p>
3768
3769 </p>
3770 <ul>
3771 <li>Instantiate a <tt>Class</tt> object</li>
3772
3773 <ul>
3774 <li>Specify members &#40;methods, attributes&#41;</li>
3775 <li>... and ancestor classes &#38; roles</li>
3776 </ul>
3777 <li>Compile class</li>
3778 </ul>
3779 <small>continued...</small>
3780
3781 </div>
3782 <!-- END slide -->
3783
3784
3785 <!-- BEGIN slide -->
3786 <div class="slide">
3787 <img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
3788 <h1>MO compilation flow</h1>
3789 <p>
3790
3791 </p>
3792 <ul>
3793 <li>Instantiate a <tt>Class</tt> object</li>
3794
3795 <ul>
3796 <li>Specify members &#40;methods, attributes&#41;</li>
3797 <li>... and ancestor classes &#38; roles</li>
3798 </ul>
3799 <li>Compile class</li>
3800
3801 <ul>
3802 <li><tt>my $class_methods_ri = $class-&gt;class_interface&#40;&#41;</tt></li>
3803 </ul></ul>
3804 <small>continued...</small>
3805
3806 </div>
3807 <!-- END slide -->
3808
3809
3810 <!-- BEGIN slide -->
3811 <div class="slide">
3812 <img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
3813 <h1>MO compilation flow</h1>
3814 <p>
3815
3816 </p>
3817 <ul>
3818 <li>Instantiate a <tt>Class</tt> object</li>
3819
3820 <ul>
3821 <li>Specify members &#40;methods, attributes&#41;</li>
3822 <li>... and ancestor classes &#38; roles</li>
3823 </ul>
3824 <li>Compile class</li>
3825
3826 <ul>
3827 <li><tt>my $class_methods_ri = $class-&gt;class_interface&#40;&#41;</tt></li>
3828 <li>Instance method RI closed in the constructor, within <tt>$ri</tt></li>
3829 </ul></ul>
3830 <small>continued...</small>
3831
3832 </div>
3833 <!-- END slide -->
3834
3835
3836 <!-- BEGIN slide -->
3837 <div class="slide">
3838 <img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
3839 <h1>MO compilation flow</h1>
3840 <p>
3841
3842 </p>
3843 <ul>
3844 <li>Instantiate a <tt>Class</tt> object</li>
3845
3846 <ul>
3847 <li>Specify members &#40;methods, attributes&#41;</li>
3848 <li>... and ancestor classes &#38; roles</li>
3849 </ul>
3850 <li>Compile class</li>
3851
3852 <ul>
3853 <li><tt>my $class_methods_ri = $class-&gt;class_interface&#40;&#41;</tt></li>
3854 <li>Instance method RI closed in the constructor, within <tt>$ri</tt></li>
3855 <li>Purely functional operation </li>
3856 </ul></ul>
3857
3858 </div>
3859 <!-- END slide -->
3860
3861
3862 <!-- BEGIN slide -->
3863 <div class="slide">
3864 <img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
3865 <h1>RI composition</h1>
3866 <p>
3867
3868 </p>
3869 <small>continued...</small>
3870
3871 </div>
3872 <!-- END slide -->
3873
3874
3875 <!-- BEGIN slide -->
3876 <div class="slide">
3877 <img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
3878 <h1>RI composition</h1>
3879 <p>
3880
3881 </p>
3882 <ul>
3883 <li>Compute instance methods and attributes from ancestry</li>
3884 </ul>
3885 <small>continued...</small>
3886
3887 </div>
3888 <!-- END slide -->
3889
3890
3891 <!-- BEGIN slide -->
3892 <div class="slide">
3893 <img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
3894 <h1>RI composition</h1>
3895 <p>
3896
3897 </p>
3898 <ul>
3899 <li>Compute instance methods and attributes from ancestry</li>
3900 <li>Compute instance slots from attributes</li>
3901 </ul>
3902 <small>continued...</small>
3903
3904 </div>
3905 <!-- END slide -->
3906
3907
3908 <!-- BEGIN slide -->
3909 <div class="slide">
3910 <img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
3911 <h1>RI composition</h1>
3912 <p>
3913
3914 </p>
3915 <ul>
3916 <li>Compute instance methods and attributes from ancestry</li>
3917 <li>Compute instance slots from attributes</li>
3918 <li>Generate accessors</li>
3919 </ul>
3920 <small>continued...</small>
3921
3922 </div>
3923 <!-- END slide -->
3924
3925
3926 <!-- BEGIN slide -->
3927 <div class="slide">
3928 <img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
3929 <h1>RI composition</h1>
3930 <p>
3931
3932 </p>
3933 <ul>
3934 <li>Compute instance methods and attributes from ancestry</li>
3935 <li>Compute instance slots from attributes</li>
3936 <li>Generate accessors</li>
3937 </ul>
3938 <pre class="vim">  MO::Run::ResponderInterface::MethodTable-&gt;new(
3939     methods =&gt; %methods
3940   );
3941 </pre>
3942 <small>continued...</small>
3943
3944 </div>
3945 <!-- END slide -->
3946
3947
3948 <!-- BEGIN slide -->
3949 <div class="slide">
3950 <img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
3951 <h1>RI composition</h1>
3952 <p>
3953
3954 </p>
3955 <ul>
3956 <li>Compute instance methods and attributes from ancestry</li>
3957 <li>Compute instance slots from attributes</li>
3958 <li>Generate accessors</li>
3959 </ul>
3960 <pre class="vim">  MO::Run::ResponderInterface::MethodTable-&gt;new(
3961     methods =&gt; %methods
3962   );
3963 </pre>
3964 <ul>
3965 <li>Generate constructor</li>
3966 </ul>
3967 <small>continued...</small>
3968
3969 </div>
3970 <!-- END slide -->
3971
3972
3973 <!-- BEGIN slide -->
3974 <div class="slide">
3975 <img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
3976 <h1>RI composition</h1>
3977 <p>
3978
3979 </p>
3980 <ul>
3981 <li>Compute instance methods and attributes from ancestry</li>
3982 <li>Compute instance slots from attributes</li>
3983 <li>Generate accessors</li>
3984 </ul>
3985 <pre class="vim">  MO::Run::ResponderInterface::MethodTable-&gt;new(
3986     methods =&gt; %methods
3987   );
3988 </pre>
3989 <ul>
3990 <li>Generate constructor</li>
3991 </ul>
3992 <pre class="vim">  sub {
3993     my $data = process_params(@_);
3994     return box( $data, $instance_ri );
3995   }
3996 </pre>
3997
3998 </div>
3999 <!-- END slide -->
4000
4001
4002 <!-- BEGIN slide -->
4003 <div class="slide">
4004 <img name="img" id="img" width="350" src="images/Creation-hands-L.jpg" align=right>
4005 <h1>Instantiation</h1>
4006 <p>
4007
4008 </p>
4009 <small>continued...</small>
4010
4011 </div>
4012 <!-- END slide -->
4013
4014
4015 <!-- BEGIN slide -->
4016 <div class="slide">
4017 <img name="img" id="img" width="350" src="images/Creation-hands-L.jpg" align=right>
4018 <h1>Instantiation</h1>
4019 <p>
4020
4021 </p>
4022 <ul>
4023 <li>Lookup RI using class name</li>
4024 </ul>
4025 <small>continued...</small>
4026
4027 </div>
4028 <!-- END slide -->
4029
4030
4031 <!-- BEGIN slide -->
4032 <div class="slide">
4033 <img name="img" id="img" width="350" src="images/Creation-hands-L.jpg" align=right>
4034 <h1>Instantiation</h1>
4035 <p>
4036
4037 </p>
4038 <ul>
4039 <li>Lookup RI using class name</li>
4040 <li>Dispatch constructor class method</li>
4041 </ul>
4042 <small>continued...</small>
4043
4044 </div>
4045 <!-- END slide -->
4046
4047
4048 <!-- BEGIN slide -->
4049 <div class="slide">
4050 <img name="img" id="img" width="350" src="images/Creation-hands-L.jpg" align=right>
4051 <h1>Instantiation</h1>
4052 <p>
4053
4054 </p>
4055 <ul>
4056 <li>Lookup RI using class name</li>
4057 <li>Dispatch constructor class method</li>
4058 <li>Compose data from params</li>
4059 </ul>
4060 <small>continued...</small>
4061
4062 </div>
4063 <!-- END slide -->
4064
4065
4066 <!-- BEGIN slide -->
4067 <div class="slide">
4068 <img name="img" id="img" width="350" src="images/Creation-hands-L.jpg" align=right>
4069 <h1>Instantiation</h1>
4070 <p>
4071
4072 </p>
4073 <ul>
4074 <li>Lookup RI using class name</li>
4075 <li>Dispatch constructor class method</li>
4076 <li>Compose data from params</li>
4077
4078 <ul>
4079 <li>Slightly complicated</li>
4080 </ul></ul>
4081 <small>continued...</small>
4082
4083 </div>
4084 <!-- END slide -->
4085
4086
4087 <!-- BEGIN slide -->
4088 <div class="slide">
4089 <img name="img" id="img" width="350" src="images/Creation-hands-L.jpg" align=right>
4090 <h1>Instantiation</h1>
4091 <p>
4092
4093 </p>
4094 <ul>
4095 <li>Lookup RI using class name</li>
4096 <li>Dispatch constructor class method</li>
4097 <li>Compose data from params</li>
4098
4099 <ul>
4100 <li>Slightly complicated</li>
4101 </ul>
4102 <li>Link data with closed <tt>$instance_ri</tt></li>
4103 </ul>
4104 <small>continued...</small>
4105
4106 </div>
4107 <!-- END slide -->
4108
4109
4110 <!-- BEGIN slide -->
4111 <div class="slide">
4112 <img name="img" id="img" width="350" src="images/Creation-hands-L.jpg" align=right>
4113 <h1>Instantiation</h1>
4114 <p>
4115
4116 </p>
4117 <ul>
4118 <li>Lookup RI using class name</li>
4119 <li>Dispatch constructor class method</li>
4120 <li>Compose data from params</li>
4121
4122 <ul>
4123 <li>Slightly complicated</li>
4124 </ul>
4125 <li>Link data with closed <tt>$instance_ri</tt></li>
4126
4127 <ul>
4128 <li>Responder == &#40; Data, RI &#41;</li>
4129 </ul></ul>
4130 <small>continued...</small>
4131
4132 </div>
4133 <!-- END slide -->
4134
4135
4136 <!-- BEGIN slide -->
4137 <div class="slide">
4138 <img name="img" id="img" width="350" src="images/Creation-hands-L.jpg" align=right>
4139 <h1>Instantiation</h1>
4140 <p>
4141
4142 </p>
4143 <ul>
4144 <li>Lookup RI using class name</li>
4145 <li>Dispatch constructor class method</li>
4146 <li>Compose data from params</li>
4147
4148 <ul>
4149 <li>Slightly complicated</li>
4150 </ul>
4151 <li>Link data with closed <tt>$instance_ri</tt></li>
4152
4153 <ul>
4154 <li>Responder == &#40; Data, RI &#41;</li>
4155 <li>Like <tt>bless</tt></li>
4156 </ul></ul>
4157
4158 </div>
4159 <!-- END slide -->
4160
4161
4162 <!-- BEGIN slide -->
4163 <div class="slide">
4164 <img name="img" id="img" width="350" src="images/telephone.jpg" align=right>
4165 <h1>Method calls</h1>
4166 <p>
4167
4168 </p>
4169 <small>continued...</small>
4170
4171 </div>
4172 <!-- END slide -->
4173
4174
4175 <!-- BEGIN slide -->
4176 <div class="slide">
4177 <img name="img" id="img" width="350" src="images/telephone.jpg" align=right>
4178 <h1>Method calls</h1>
4179 <p>
4180
4181 </p>
4182 <ul>
4183 <li>How to talk with your new object?</li>
4184 </ul>
4185 <small>continued...</small>
4186
4187 </div>
4188 <!-- END slide -->
4189
4190
4191 <!-- BEGIN slide -->
4192 <div class="slide">
4193 <img name="img" id="img" width="350" src="images/telephone.jpg" align=right>
4194 <h1>Method calls</h1>
4195 <p>
4196
4197 </p>
4198 <ul>
4199 <li>How to talk with your new object?</li>
4200 </ul>
4201 <pre class="vim">  my $ri = $responder-&gt;responder_interface;
4202
4203 </pre>
4204 <small>continued...</small>
4205
4206 </div>
4207 <!-- END slide -->
4208
4209
4210 <!-- BEGIN slide -->
4211 <div class="slide">
4212 <img name="img" id="img" width="350" src="images/telephone.jpg" align=right>
4213 <h1>Method calls</h1>
4214 <p>
4215
4216 </p>
4217 <ul>
4218 <li>How to talk with your new object?</li>
4219 </ul>
4220 <pre class="vim">  my $ri = $responder-&gt;responder_interface;
4221
4222
4223   my $method = MO::Run::Invocation::Method-&gt;new(
4224     name      =&gt; &quot;foo&quot;
4225     arguments =&gt; \@blah,
4226   );
4227
4228 </pre>
4229 <small>continued...</small>
4230
4231 </div>
4232 <!-- END slide -->
4233
4234
4235 <!-- BEGIN slide -->
4236 <div class="slide">
4237 <img name="img" id="img" width="350" src="images/telephone.jpg" align=right>
4238 <h1>Method calls</h1>
4239 <p>
4240
4241 </p>
4242 <ul>
4243 <li>How to talk with your new object?</li>
4244 </ul>
4245 <pre class="vim">  my $ri = $responder-&gt;responder_interface;
4246
4247
4248   my $method = MO::Run::Invocation::Method-&gt;new(
4249     name      =&gt; &quot;foo&quot;
4250     arguments =&gt; \@blah,
4251   );
4252
4253
4254   $ri-&gt;dispatch( $responder, $method );
4255 </pre>
4256 <small>continued...</small>
4257
4258 </div>
4259 <!-- END slide -->
4260
4261
4262 <!-- BEGIN slide -->
4263 <div class="slide">
4264 <img name="img" id="img" width="350" src="images/telephone.jpg" align=right>
4265 <h1>Method calls</h1>
4266 <p>
4267
4268 </p>
4269 <ul>
4270 <li>How to talk with your new object?</li>
4271 </ul>
4272 <pre class="vim">  my $ri = $responder-&gt;responder_interface;
4273
4274
4275   my $method = MO::Run::Invocation::Method-&gt;new(
4276     name      =&gt; &quot;foo&quot;
4277     arguments =&gt; \@blah,
4278   );
4279
4280
4281   $ri-&gt;dispatch( $responder, $method );
4282 </pre>
4283 <ul>
4284 <li>Arbitrary responder interfaces also allowed</li>
4285 </ul>
4286 <small>continued...</small>
4287
4288 </div>
4289 <!-- END slide -->
4290
4291
4292 <!-- BEGIN slide -->
4293 <div class="slide">
4294 <img name="img" id="img" width="350" src="images/telephone.jpg" align=right>
4295 <h1>Method calls</h1>
4296 <p>
4297
4298 </p>
4299 <ul>
4300 <li>How to talk with your new object?</li>
4301 </ul>
4302 <pre class="vim">  my $ri = $responder-&gt;responder_interface;
4303
4304
4305   my $method = MO::Run::Invocation::Method-&gt;new(
4306     name      =&gt; &quot;foo&quot;
4307     arguments =&gt; \@blah,
4308   );
4309
4310
4311   $ri-&gt;dispatch( $responder, $method );
4312 </pre>
4313 <ul>
4314 <li>Arbitrary responder interfaces also allowed</li>
4315
4316 <ul>
4317 <li>Doesn&#39;t have to be <tt>$responder-&gt;responder_interface</tt></li>
4318 </ul></ul>
4319
4320 </div>
4321 <!-- END slide -->
4322
4323
4324 <!-- BEGIN slide -->
4325 <div class="slide">
4326 <img name="img" id="img" width="350" src="images/Surprise-buttsecks.jpg" align=right>
4327 <h1>OH NOES!!!</h1>
4328 <p>
4329
4330 </p>
4331 <small>continued...</small>
4332
4333 </div>
4334 <!-- END slide -->
4335
4336
4337 <!-- BEGIN slide -->
4338 <div class="slide">
4339 <img name="img" id="img" width="350" src="images/Surprise-buttsecks.jpg" align=right>
4340 <h1>OH NOES!!!</h1>
4341 <p>
4342
4343 </p>
4344 <ul>
4345 <li>What&#39;s wrong with the previous slide?</li>
4346 </ul>
4347 <small>continued...</small>
4348
4349 </div>
4350 <!-- END slide -->
4351
4352
4353 <!-- BEGIN slide -->
4354 <div class="slide">
4355 <img name="img" id="img" width="350" src="images/Surprise-buttsecks.jpg" align=right>
4356 <h1>OH NOES!!!</h1>
4357 <p>
4358
4359 </p>
4360 <ul>
4361 <li>What&#39;s wrong with the previous slide?</li>
4362 <li>RIs are objects too!</li>
4363 </ul>
4364 <small>continued...</small>
4365
4366 </div>
4367 <!-- END slide -->
4368
4369
4370 <!-- BEGIN slide -->
4371 <div class="slide">
4372 <img name="img" id="img" width="350" src="images/Surprise-buttsecks.jpg" align=right>
4373 <h1>OH NOES!!!</h1>
4374 <p>
4375
4376 </p>
4377 <ul>
4378 <li>What&#39;s wrong with the previous slide?</li>
4379 <li>RIs are objects too!</li>
4380 <li>Need to bootstrap method calls</li>
4381 </ul>
4382 <small>continued...</small>
4383
4384 </div>
4385 <!-- END slide -->
4386
4387
4388 <!-- BEGIN slide -->
4389 <div class="slide">
4390 <img name="img" id="img" width="350" src="images/Surprise-buttsecks.jpg" align=right>
4391 <h1>OH NOES!!!</h1>
4392 <p>
4393
4394 </p>
4395 <ul>
4396 <li>What&#39;s wrong with the previous slide?</li>
4397 <li>RIs are objects too!</li>
4398 <li>Need to bootstrap method calls</li>
4399 <li>Runtime must bootstrap low level OO</li>
4400 </ul>
4401 <small>continued...</small>
4402
4403 </div>
4404 <!-- END slide -->
4405
4406
4407 <!-- BEGIN slide -->
4408 <div class="slide">
4409 <img name="img" id="img" width="350" src="images/Surprise-buttsecks.jpg" align=right>
4410 <h1>OH NOES!!!</h1>
4411 <p>
4412
4413 </p>
4414 <ul>
4415 <li>What&#39;s wrong with the previous slide?</li>
4416 <li>RIs are objects too!</li>
4417 <li>Need to bootstrap method calls</li>
4418 <li>Runtime must bootstrap low level OO</li>
4419
4420 <ul>
4421 <li>More on this soon</li>
4422 </ul></ul>
4423
4424 </div>
4425 <!-- END slide -->
4426
4427
4428 <!-- BEGIN slide -->
4429 <div class="slide">
4430 <img name="img" id="img" width="350" src="images/44790qV87_w.jpg" align=right>
4431 <h1>Meta level polymorphism</h1>
4432 <p>
4433
4434 </p>
4435 <small>continued...</small>
4436
4437 </div>
4438 <!-- END slide -->
4439
4440
4441 <!-- BEGIN slide -->
4442 <div class="slide">
4443 <img name="img" id="img" width="350" src="images/44790qV87_w.jpg" align=right>
4444 <h1>Meta level polymorphism</h1>
4445 <p>
4446
4447 </p>
4448 <ul>
4449 <li>An important point</li>
4450 </ul>
4451 <small>continued...</small>
4452
4453 </div>
4454 <!-- END slide -->
4455
4456
4457 <!-- BEGIN slide -->
4458 <div class="slide">
4459 <img name="img" id="img" width="350" src="images/44790qV87_w.jpg" align=right>
4460 <h1>Meta level polymorphism</h1>
4461 <p>
4462
4463 </p>
4464 <ul>
4465 <li>An important point</li>
4466
4467 <ul>
4468 <li>In fact, <strong>the</strong> point of MO</li>
4469 </ul></ul>
4470 <small>continued...</small>
4471
4472 </div>
4473 <!-- END slide -->
4474
4475
4476 <!-- BEGIN slide -->
4477 <div class="slide">
4478 <img name="img" id="img" width="350" src="images/44790qV87_w.jpg" align=right>
4479 <h1>Meta level polymorphism</h1>
4480 <p>
4481
4482 </p>
4483 <ul>
4484 <li>An important point</li>
4485
4486 <ul>
4487 <li>In fact, <strong>the</strong> point of MO</li>
4488 </ul>
4489 <li>Responder interfaces are polymorphic</li>
4490 </ul>
4491 <small>continued...</small>
4492
4493 </div>
4494 <!-- END slide -->
4495
4496
4497 <!-- BEGIN slide -->
4498 <div class="slide">
4499 <img name="img" id="img" width="350" src="images/44790qV87_w.jpg" align=right>
4500 <h1>Meta level polymorphism</h1>
4501 <p>
4502
4503 </p>
4504 <ul>
4505 <li>An important point</li>
4506
4507 <ul>
4508 <li>In fact, <strong>the</strong> point of MO</li>
4509 </ul>
4510 <li>Responder interfaces are polymorphic</li>
4511
4512 <ul>
4513 <li>Method table, network proxy, whatever</li>
4514 </ul></ul>
4515 <small>continued...</small>
4516
4517 </div>
4518 <!-- END slide -->
4519
4520
4521 <!-- BEGIN slide -->
4522 <div class="slide">
4523 <img name="img" id="img" width="350" src="images/44790qV87_w.jpg" align=right>
4524 <h1>Meta level polymorphism</h1>
4525 <p>
4526
4527 </p>
4528 <ul>
4529 <li>An important point</li>
4530
4531 <ul>
4532 <li>In fact, <strong>the</strong> point of MO</li>
4533 </ul>
4534 <li>Responder interfaces are polymorphic</li>
4535
4536 <ul>
4537 <li>Method table, network proxy, whatever</li>
4538 </ul>
4539 <li>Easy to specialize</li>
4540 </ul>
4541 <small>continued...</small>
4542
4543 </div>
4544 <!-- END slide -->
4545
4546
4547 <!-- BEGIN slide -->
4548 <div class="slide">
4549 <img name="img" id="img" width="350" src="images/44790qV87_w.jpg" align=right>
4550 <h1>Meta level polymorphism</h1>
4551 <p>
4552
4553 </p>
4554 <ul>
4555 <li>An important point</li>
4556
4557 <ul>
4558 <li>In fact, <strong>the</strong> point of MO</li>
4559 </ul>
4560 <li>Responder interfaces are polymorphic</li>
4561
4562 <ul>
4563 <li>Method table, network proxy, whatever</li>
4564 </ul>
4565 <li>Easy to specialize</li>
4566
4567 <ul>
4568 <li>Optimizations</li>
4569 </ul></ul>
4570 <small>continued...</small>
4571
4572 </div>
4573 <!-- END slide -->
4574
4575
4576 <!-- BEGIN slide -->
4577 <div class="slide">
4578 <img name="img" id="img" width="350" src="images/44790qV87_w.jpg" align=right>
4579 <h1>Meta level polymorphism</h1>
4580 <p>
4581
4582 </p>
4583 <ul>
4584 <li>An important point</li>
4585
4586 <ul>
4587 <li>In fact, <strong>the</strong> point of MO</li>
4588 </ul>
4589 <li>Responder interfaces are polymorphic</li>
4590
4591 <ul>
4592 <li>Method table, network proxy, whatever</li>
4593 </ul>
4594 <li>Easy to specialize</li>
4595
4596 <ul>
4597 <li>Optimizations</li>
4598 <li>Strange features</li>
4599 </ul></ul>
4600 <small>continued...</small>
4601
4602 </div>
4603 <!-- END slide -->
4604
4605
4606 <!-- BEGIN slide -->
4607 <div class="slide">
4608 <img name="img" id="img" width="350" src="images/44790qV87_w.jpg" align=right>
4609 <h1>Meta level polymorphism</h1>
4610 <p>
4611
4612 </p>
4613 <ul>
4614 <li>An important point</li>
4615
4616 <ul>
4617 <li>In fact, <strong>the</strong> point of MO</li>
4618 </ul>
4619 <li>Responder interfaces are polymorphic</li>
4620
4621 <ul>
4622 <li>Method table, network proxy, whatever</li>
4623 </ul>
4624 <li>Easy to specialize</li>
4625
4626 <ul>
4627 <li>Optimizations</li>
4628 <li>Strange features</li>
4629 </ul>
4630 <li>Easy to mix several OO systems</li>
4631 </ul>
4632 <small>continued...</small>
4633
4634 </div>
4635 <!-- END slide -->
4636
4637
4638 <!-- BEGIN slide -->
4639 <div class="slide">
4640 <img name="img" id="img" width="350" src="images/44790qV87_w.jpg" align=right>
4641 <h1>Meta level polymorphism</h1>
4642 <p>
4643
4644 </p>
4645 <ul>
4646 <li>An important point</li>
4647
4648 <ul>
4649 <li>In fact, <strong>the</strong> point of MO</li>
4650 </ul>
4651 <li>Responder interfaces are polymorphic</li>
4652
4653 <ul>
4654 <li>Method table, network proxy, whatever</li>
4655 </ul>
4656 <li>Easy to specialize</li>
4657
4658 <ul>
4659 <li>Optimizations</li>
4660 <li>Strange features</li>
4661 </ul>
4662 <li>Easy to mix several OO systems</li>
4663
4664 <ul>
4665 <li>Just compile to separate RIs</li>
4666 </ul></ul>
4667
4668 </div>
4669 <!-- END slide -->
4670
4671
4672 <!-- BEGIN slide -->
4673 <div class="slide">
4674 <img name="img" id="img" width="350" src="images/card-camel-108.jpg" align=right>
4675 <h1>MO in Perl 5</h1>
4676 <p>
4677
4678 </p>
4679 <small>continued...</small>
4680
4681 </div>
4682 <!-- END slide -->
4683
4684
4685 <!-- BEGIN slide -->
4686 <div class="slide">
4687 <img name="img" id="img" width="350" src="images/card-camel-108.jpg" align=right>
4688 <h1>MO in Perl 5</h1>
4689 <p>
4690
4691 </p>
4692 <ul>
4693 <li>Two runtimes</li>
4694 </ul>
4695 <small>continued...</small>
4696
4697 </div>
4698 <!-- END slide -->
4699
4700
4701 <!-- BEGIN slide -->
4702 <div class="slide">
4703 <img name="img" id="img" width="350" src="images/card-camel-108.jpg" align=right>
4704 <h1>MO in Perl 5</h1>
4705 <p>
4706
4707 </p>
4708 <ul>
4709 <li>Two runtimes</li>
4710 <li>Very different</li>
4711 </ul>
4712 <small>continued...</small>
4713
4714 </div>
4715 <!-- END slide -->
4716
4717
4718 <!-- BEGIN slide -->
4719 <div class="slide">
4720 <img name="img" id="img" width="350" src="images/card-camel-108.jpg" align=right>
4721 <h1>MO in Perl 5</h1>
4722 <p>
4723
4724 </p>
4725 <ul>
4726 <li>Two runtimes</li>
4727 <li>Very different</li>
4728 <li><tt>MO::Run::Aux</tt> wraps both</li>
4729 </ul>
4730 <small>continued...</small>
4731
4732 </div>
4733 <!-- END slide -->
4734
4735
4736 <!-- BEGIN slide -->
4737 <div class="slide">
4738 <img name="img" id="img" width="350" src="images/card-camel-108.jpg" align=right>
4739 <h1>MO in Perl 5</h1>
4740 <p>
4741
4742 </p>
4743 <ul>
4744 <li>Two runtimes</li>
4745 <li>Very different</li>
4746 <li><tt>MO::Run::Aux</tt> wraps both</li>
4747
4748 <ul>
4749 <li>Share tests by running with different <tt>%ENV</tt> var</li>
4750 </ul></ul>
4751
4752 </div>
4753 <!-- END slide -->
4754
4755
4756 <!-- BEGIN slide -->
4757 <div class="slide">
4758 <img name="img" id="img" width="350" src="images/S2Secret.jpg" align=right>
4759 <h1>Hosted runtime</h1>
4760 <p>
4761
4762 </p>
4763 <small>continued...</small>
4764
4765 </div>
4766 <!-- END slide -->
4767
4768
4769 <!-- BEGIN slide -->
4770 <div class="slide">
4771 <img name="img" id="img" width="350" src="images/S2Secret.jpg" align=right>
4772 <h1>Hosted runtime</h1>
4773 <p>
4774
4775 </p>
4776 <ul>
4777 <li>Nested object system</li>
4778 </ul>
4779 <small>continued...</small>
4780
4781 </div>
4782 <!-- END slide -->
4783
4784
4785 <!-- BEGIN slide -->
4786 <div class="slide">
4787 <img name="img" id="img" width="350" src="images/S2Secret.jpg" align=right>
4788 <h1>Hosted runtime</h1>
4789 <p>
4790
4791 </p>
4792 <ul>
4793 <li>Nested object system</li>
4794 <li>Bootstraps with Perl 5</li>
4795 </ul>
4796 <small>continued...</small>
4797
4798 </div>
4799 <!-- END slide -->
4800
4801
4802 <!-- BEGIN slide -->
4803 <div class="slide">
4804 <img name="img" id="img" width="350" src="images/S2Secret.jpg" align=right>
4805 <h1>Hosted runtime</h1>
4806 <p>
4807
4808 </p>
4809 <ul>
4810 <li>Nested object system</li>
4811 <li>Bootstraps with Perl 5</li>
4812
4813 <ul>
4814 <li>Native Perl OO == Low level, like VM opcodes</li>
4815 </ul></ul>
4816 <small>continued...</small>
4817
4818 </div>
4819 <!-- END slide -->
4820
4821
4822 <!-- BEGIN slide -->
4823 <div class="slide">
4824 <img name="img" id="img" width="350" src="images/S2Secret.jpg" align=right>
4825 <h1>Hosted runtime</h1>
4826 <p>
4827
4828 </p>
4829 <ul>
4830 <li>Nested object system</li>
4831 <li>Bootstraps with Perl 5</li>
4832
4833 <ul>
4834 <li>Native Perl OO == Low level, like VM opcodes</li>
4835 <li>Virtualized MO == High Level</li>
4836 </ul></ul>
4837 <small>continued...</small>
4838
4839 </div>
4840 <!-- END slide -->
4841
4842
4843 <!-- BEGIN slide -->
4844 <div class="slide">
4845 <img name="img" id="img" width="350" src="images/S2Secret.jpg" align=right>
4846 <h1>Hosted runtime</h1>
4847 <p>
4848
4849 </p>
4850 <ul>
4851 <li>Nested object system</li>
4852 <li>Bootstraps with Perl 5</li>
4853
4854 <ul>
4855 <li>Native Perl OO == Low level, like VM opcodes</li>
4856 <li>Virtualized MO == High Level</li>
4857 <li>Completely separate levels</li>
4858 </ul></ul>
4859 <small>continued...</small>
4860
4861 </div>
4862 <!-- END slide -->
4863
4864
4865 <!-- BEGIN slide -->
4866 <div class="slide">
4867 <img name="img" id="img" width="350" src="images/S2Secret.jpg" align=right>
4868 <h1>Hosted runtime</h1>
4869 <p>
4870
4871 </p>
4872 <ul>
4873 <li>Nested object system</li>
4874 <li>Bootstraps with Perl 5</li>
4875
4876 <ul>
4877 <li>Native Perl OO == Low level, like VM opcodes</li>
4878 <li>Virtualized MO == High Level</li>
4879 <li>Completely separate levels</li>
4880 </ul>
4881 <li><tt>$ri-&gt;dispatch&#40; $responder, $method &#41;</tt></li>
4882 </ul>
4883 <small>continued...</small>
4884
4885 </div>
4886 <!-- END slide -->
4887
4888
4889 <!-- BEGIN slide -->
4890 <div class="slide">
4891 <img name="img" id="img" width="350" src="images/S2Secret.jpg" align=right>
4892 <h1>Hosted runtime</h1>
4893 <p>
4894
4895 </p>
4896 <ul>
4897 <li>Nested object system</li>
4898 <li>Bootstraps with Perl 5</li>
4899
4900 <ul>
4901 <li>Native Perl OO == Low level, like VM opcodes</li>
4902 <li>Virtualized MO == High Level</li>
4903 <li>Completely separate levels</li>
4904 </ul>
4905 <li><tt>$ri-&gt;dispatch&#40; $responder, $method &#41;</tt></li>
4906
4907 <ul>
4908 <li>not <tt>$responder-&gt;$method&#40;&#41;</tt></li>
4909 </ul></ul>
4910 <small>continued...</small>
4911
4912 </div>
4913 <!-- END slide -->
4914
4915
4916 <!-- BEGIN slide -->
4917 <div class="slide">
4918 <img name="img" id="img" width="350" src="images/S2Secret.jpg" align=right>
4919 <h1>Hosted runtime</h1>
4920 <p>
4921
4922 </p>
4923 <ul>
4924 <li>Nested object system</li>
4925 <li>Bootstraps with Perl 5</li>
4926
4927 <ul>
4928 <li>Native Perl OO == Low level, like VM opcodes</li>
4929 <li>Virtualized MO == High Level</li>
4930 <li>Completely separate levels</li>
4931 </ul>
4932 <li><tt>$ri-&gt;dispatch&#40; $responder, $method &#41;</tt></li>
4933
4934 <ul>
4935 <li>not <tt>$responder-&gt;$method&#40;&#41;</tt></li>
4936 </ul>
4937 <li>Full expressiveness</li>
4938 </ul>
4939 <small>continued...</small>
4940
4941 </div>
4942 <!-- END slide -->
4943
4944
4945 <!-- BEGIN slide -->
4946 <div class="slide">
4947 <img name="img" id="img" width="350" src="images/S2Secret.jpg" align=right>
4948 <h1>Hosted runtime</h1>
4949 <p>
4950
4951 </p>
4952 <ul>
4953 <li>Nested object system</li>
4954 <li>Bootstraps with Perl 5</li>
4955
4956 <ul>
4957 <li>Native Perl OO == Low level, like VM opcodes</li>
4958 <li>Virtualized MO == High Level</li>
4959 <li>Completely separate levels</li>
4960 </ul>
4961 <li><tt>$ri-&gt;dispatch&#40; $responder, $method &#41;</tt></li>
4962
4963 <ul>
4964 <li>not <tt>$responder-&gt;$method&#40;&#41;</tt></li>
4965 </ul>
4966 <li>Full expressiveness</li>
4967 <li>Slow, verbose</li>
4968 </ul>
4969
4970 </div>
4971 <!-- END slide -->
4972
4973
4974 <!-- BEGIN slide -->
4975 <div class="slide">
4976 <img name="img" id="img" width="350" src="images/indian-camp.jpg" align=right>
4977 <h1>Native runtime</h1>
4978 <p>
4979
4980 </p>
4981 <small>continued...</small>
4982
4983 </div>
4984 <!-- END slide -->
4985
4986
4987 <!-- BEGIN slide -->
4988 <div class="slide">
4989 <img name="img" id="img" width="350" src="images/indian-camp.jpg" align=right>
4990 <h1>Native runtime</h1>
4991 <p>
4992
4993 </p>
4994 <ul>
4995 <li>Integrated object system</li>
4996 </ul>
4997 <small>continued...</small>
4998
4999 </div>
5000 <!-- END slide -->
5001
5002
5003 <!-- BEGIN slide -->
5004 <div class="slide">
5005 <img name="img" id="img" width="350" src="images/indian-camp.jpg" align=right>
5006 <h1>Native runtime</h1>
5007 <p>
5008
5009 </p>
5010 <ul>
5011 <li>Integrated object system</li>
5012 <li>RIs are compiled into packages</li>
5013 </ul>
5014 <small>continued...</small>
5015
5016 </div>
5017 <!-- END slide -->
5018
5019
5020 <!-- BEGIN slide -->
5021 <div class="slide">
5022 <img name="img" id="img" width="350" src="images/indian-camp.jpg" align=right>
5023 <h1>Native runtime</h1>
5024 <p>
5025
5026 </p>
5027 <ul>
5028 <li>Integrated object system</li>
5029 <li>RIs are compiled into packages</li>
5030
5031 <ul>
5032 <li>Simple RIs are dissassembled and stuffed into the stash</li>
5033 </ul></ul>
5034 <small>continued...</small>
5035
5036 </div>
5037 <!-- END slide -->
5038
5039
5040 <!-- BEGIN slide -->
5041 <div class="slide">
5042 <img name="img" id="img" width="350" src="images/indian-camp.jpg" align=right>
5043 <h1>Native runtime</h1>
5044 <p>
5045
5046 </p>
5047 <ul>
5048 <li>Integrated object system</li>
5049 <li>RIs are compiled into packages</li>
5050
5051 <ul>
5052 <li>Simple RIs are dissassembled and stuffed into the stash</li>
5053 <li>Complex RIs use <tt>AUTOLOAD</tt>, delegating to the RI meta object</li>
5054 </ul></ul>
5055 <small>continued...</small>
5056
5057 </div>
5058 <!-- END slide -->
5059
5060
5061 <!-- BEGIN slide -->
5062 <div class="slide">
5063 <img name="img" id="img" width="350" src="images/indian-camp.jpg" align=right>
5064 <h1>Native runtime</h1>
5065 <p>
5066
5067 </p>
5068 <ul>
5069 <li>Integrated object system</li>
5070 <li>RIs are compiled into packages</li>
5071
5072 <ul>
5073 <li>Simple RIs are dissassembled and stuffed into the stash</li>
5074 <li>Complex RIs use <tt>AUTOLOAD</tt>, delegating to the RI meta object</li>
5075 </ul>
5076 <li>Only named method calls</li>
5077 </ul>
5078 <small>continued...</small>
5079
5080 </div>
5081 <!-- END slide -->
5082
5083
5084 <!-- BEGIN slide -->
5085 <div class="slide">
5086 <img name="img" id="img" width="350" src="images/indian-camp.jpg" align=right>
5087 <h1>Native runtime</h1>
5088 <p>
5089
5090 </p>
5091 <ul>
5092 <li>Integrated object system</li>
5093 <li>RIs are compiled into packages</li>
5094
5095 <ul>
5096 <li>Simple RIs are dissassembled and stuffed into the stash</li>
5097 <li>Complex RIs use <tt>AUTOLOAD</tt>, delegating to the RI meta object</li>
5098 </ul>
5099 <li>Only named method calls</li>
5100
5101 <ul>
5102 <li>No arbitrary call concepts</li>
5103 </ul></ul>
5104 <small>continued...</small>
5105
5106 </div>
5107 <!-- END slide -->
5108
5109
5110 <!-- BEGIN slide -->
5111 <div class="slide">
5112 <img name="img" id="img" width="350" src="images/indian-camp.jpg" align=right>
5113 <h1>Native runtime</h1>
5114 <p>
5115
5116 </p>
5117 <ul>
5118 <li>Integrated object system</li>
5119 <li>RIs are compiled into packages</li>
5120
5121 <ul>
5122 <li>Simple RIs are dissassembled and stuffed into the stash</li>
5123 <li>Complex RIs use <tt>AUTOLOAD</tt>, delegating to the RI meta object</li>
5124 </ul>
5125 <li>Only named method calls</li>
5126
5127 <ul>
5128 <li>No arbitrary call concepts</li>
5129 <li><tt>-&gt;</tt> doesn&#39;t support anything else</li>
5130 </ul></ul>
5131 <small>continued...</small>
5132
5133 </div>
5134 <!-- END slide -->
5135
5136
5137 <!-- BEGIN slide -->
5138 <div class="slide">
5139 <img name="img" id="img" width="350" src="images/indian-camp.jpg" align=right>
5140 <h1>Native runtime</h1>
5141 <p>
5142
5143 </p>
5144 <ul>
5145 <li>Integrated object system</li>
5146 <li>RIs are compiled into packages</li>
5147
5148 <ul>
5149 <li>Simple RIs are dissassembled and stuffed into the stash</li>
5150 <li>Complex RIs use <tt>AUTOLOAD</tt>, delegating to the RI meta object</li>
5151 </ul>
5152 <li>Only named method calls</li>
5153
5154 <ul>
5155 <li>No arbitrary call concepts</li>
5156 <li><tt>-&gt;</tt> doesn&#39;t support anything else</li>
5157 </ul>
5158 <li>As fast as &#34;regular&#34; Perl OO</li>
5159 </ul>
5160 <small>continued...</small>
5161
5162 </div>
5163 <!-- END slide -->
5164
5165
5166 <!-- BEGIN slide -->
5167 <div class="slide">
5168 <img name="img" id="img" width="350" src="images/indian-camp.jpg" align=right>
5169 <h1>Native runtime</h1>
5170 <p>
5171
5172 </p>
5173 <ul>
5174 <li>Integrated object system</li>
5175 <li>RIs are compiled into packages</li>
5176
5177 <ul>
5178 <li>Simple RIs are dissassembled and stuffed into the stash</li>
5179 <li>Complex RIs use <tt>AUTOLOAD</tt>, delegating to the RI meta object</li>
5180 </ul>
5181 <li>Only named method calls</li>
5182
5183 <ul>
5184 <li>No arbitrary call concepts</li>
5185 <li><tt>-&gt;</tt> doesn&#39;t support anything else</li>
5186 </ul>
5187 <li>As fast as &#34;regular&#34; Perl OO</li>
5188
5189 <ul>
5190 <li>Even makes simple, standalone `.pmc`s</li>
5191 </ul></ul>
5192
5193 </div>
5194 <!-- END slide -->
5195
5196
5197 <!-- BEGIN slide -->
5198 <div class="slide">
5199
5200 <h1>Perl 5 Runtimes</h1>
5201 <small>continued...</small>
5202
5203 </div>
5204 <!-- END slide -->
5205
5206
5207 <!-- BEGIN slide -->
5208 <div class="slide">
5209
5210 <h1>Perl 5 Runtimes</h1>
5211 <ul>
5212 <li>Native</li>
5213 </ul>
5214 <small>continued...</small>
5215
5216 </div>
5217 <!-- END slide -->
5218
5219
5220 <!-- BEGIN slide -->
5221 <div class="slide">
5222
5223 <h1>Perl 5 Runtimes</h1>
5224 <ul>
5225 <li>Native</li>
5226
5227 <ul>
5228 <li>Usable with regular Perl OO <span class="html">&#9786;</span></li>
5229 </ul></ul>
5230 <small>continued...</small>
5231
5232 </div>
5233 <!-- END slide -->
5234
5235
5236 <!-- BEGIN slide -->
5237 <div class="slide">
5238
5239 <h1>Perl 5 Runtimes</h1>
5240 <ul>
5241 <li>Native</li>
5242
5243 <ul>
5244 <li>Usable with regular Perl OO <span class="html">&#9786;</span></li>
5245 <li>Lacks arbitrary invocations <span class="html">&#9785;</span> </li>
5246 </ul></ul>
5247 <small>continued...</small>
5248
5249 </div>
5250 <!-- END slide -->
5251
5252
5253 <!-- BEGIN slide -->
5254 <div class="slide">
5255
5256 <h1>Perl 5 Runtimes</h1>
5257 <ul>
5258 <li>Native</li>
5259
5260 <ul>
5261 <li>Usable with regular Perl OO <span class="html">&#9786;</span></li>
5262 <li>Lacks arbitrary invocations <span class="html">&#9785;</span> </li>
5263 </ul>
5264 <li>Virtualized</li>
5265 </ul>
5266 <small>continued...</small>
5267
5268 </div>
5269 <!-- END slide -->
5270
5271
5272 <!-- BEGIN slide -->
5273 <div class="slide">
5274
5275 <h1>Perl 5 Runtimes</h1>
5276 <ul>
5277 <li>Native</li>
5278
5279 <ul>
5280 <li>Usable with regular Perl OO <span class="html">&#9786;</span></li>
5281 <li>Lacks arbitrary invocations <span class="html">&#9785;</span> </li>
5282 </ul>
5283 <li>Virtualized</li>
5284
5285 <ul>
5286 <li>Feature complete <span class="html">&#9786;</span></li>
5287 </ul></ul>
5288 <small>continued...</small>
5289
5290 </div>
5291 <!-- END slide -->
5292
5293
5294 <!-- BEGIN slide -->
5295 <div class="slide">
5296
5297 <h1>Perl 5 Runtimes</h1>
5298 <ul>
5299 <li>Native</li>
5300
5301 <ul>
5302 <li>Usable with regular Perl OO <span class="html">&#9786;</span></li>
5303 <li>Lacks arbitrary invocations <span class="html">&#9785;</span> </li>
5304 </ul>
5305 <li>Virtualized</li>
5306
5307 <ul>
5308 <li>Feature complete <span class="html">&#9786;</span></li>
5309 <li>Doesn&#39;t integrate <span class="html">&#9785;</span></li>
5310 </ul></ul>
5311 <small>continued...</small>
5312
5313 </div>
5314 <!-- END slide -->
5315
5316
5317 <!-- BEGIN slide -->
5318 <div class="slide">
5319
5320 <h1>Perl 5 Runtimes</h1>
5321 <ul>
5322 <li>Native</li>
5323
5324 <ul>
5325 <li>Usable with regular Perl OO <span class="html">&#9786;</span></li>
5326 <li>Lacks arbitrary invocations <span class="html">&#9785;</span> </li>
5327 </ul>
5328 <li>Virtualized</li>
5329
5330 <ul>
5331 <li>Feature complete <span class="html">&#9786;</span></li>
5332 <li>Doesn&#39;t integrate <span class="html">&#9785;</span></li>
5333 <li>Slow <span class="html">&#9785;</span></li>
5334 </ul></ul>
5335
5336 </div>
5337 <!-- END slide -->
5338
5339
5340 <!-- BEGIN slide -->
5341 <div class="slide">
5342 <img name="img" id="img" width="350" src="images/botticelli.venus.jpg" align=right>
5343 <h1>Idealized MO toolchain</h1>
5344 <p>
5345
5346 </p>
5347 <small>continued...</small>
5348
5349 </div>
5350 <!-- END slide -->
5351
5352
5353 <!-- BEGIN slide -->
5354 <div class="slide">
5355 <img name="img" id="img" width="350" src="images/botticelli.venus.jpg" align=right>
5356 <h1>Idealized MO toolchain</h1>
5357 <p>
5358
5359 </p>
5360 <ul>
5361 <li>Compiler handles modeling</li>
5362 </ul>
5363 <small>continued...</small>
5364
5365 </div>
5366 <!-- END slide -->
5367
5368
5369 <!-- BEGIN slide -->
5370 <div class="slide">
5371 <img name="img" id="img" width="350" src="images/botticelli.venus.jpg" align=right>
5372 <h1>Idealized MO toolchain</h1>
5373 <p>
5374
5375 </p>
5376 <ul>
5377 <li>Compiler handles modeling</li>
5378
5379 <ul>
5380 <li>Constructs meta objects at compile time</li>
5381 </ul></ul>
5382 <small>continued...</small>
5383
5384 </div>
5385 <!-- END slide -->
5386
5387
5388 <!-- BEGIN slide -->
5389 <div class="slide">
5390 <img name="img" id="img" width="350" src="images/botticelli.venus.jpg" align=right>
5391 <h1>Idealized MO toolchain</h1>
5392 <p>
5393
5394 </p>
5395 <ul>
5396 <li>Compiler handles modeling</li>
5397
5398 <ul>
5399 <li>Constructs meta objects at compile time</li>
5400 </ul>
5401 <li>VM Opcodes support standard RI</li>
5402 </ul>
5403 <small>continued...</small>
5404
5405 </div>
5406 <!-- END slide -->
5407
5408
5409 <!-- BEGIN slide -->
5410 <div class="slide">
5411 <img name="img" id="img" width="350" src="images/botticelli.venus.jpg" align=right>
5412 <h1>Idealized MO toolchain</h1>
5413 <p>
5414
5415 </p>
5416 <ul>
5417 <li>Compiler handles modeling</li>
5418
5419 <ul>
5420 <li>Constructs meta objects at compile time</li>
5421 </ul>
5422 <li>VM Opcodes support standard RI</li>
5423 <li>Custom RIs are just objects</li>
5424 </ul>
5425 <small>continued...</small>
5426
5427 </div>
5428 <!-- END slide -->
5429
5430
5431 <!-- BEGIN slide -->
5432 <div class="slide">
5433 <img name="img" id="img" width="350" src="images/botticelli.venus.jpg" align=right>
5434 <h1>Idealized MO toolchain</h1>
5435 <p>
5436
5437 </p>
5438 <ul>
5439 <li>Compiler handles modeling</li>
5440
5441 <ul>
5442 <li>Constructs meta objects at compile time</li>
5443 </ul>
5444 <li>VM Opcodes support standard RI</li>
5445 <li>Custom RIs are just objects</li>
5446
5447 <ul>
5448 <li>Bootstrapped using standard runtime objects</li>
5449 </ul></ul>
5450 <small>continued...</small>
5451
5452 </div>
5453 <!-- END slide -->
5454
5455
5456 <!-- BEGIN slide -->
5457 <div class="slide">
5458 <img name="img" id="img" width="350" src="images/botticelli.venus.jpg" align=right>
5459 <h1>Idealized MO toolchain</h1>
5460 <p>
5461
5462 </p>
5463 <ul>
5464 <li>Compiler handles modeling</li>
5465
5466 <ul>
5467 <li>Constructs meta objects at compile time</li>
5468 </ul>
5469 <li>VM Opcodes support standard RI</li>
5470 <li>Custom RIs are just objects</li>
5471
5472 <ul>
5473 <li>Bootstrapped using standard runtime objects</li>
5474
5475 <ul>
5476 <li>Method table RI</li>
5477 </ul></ul></ul>
5478 <small>continued...</small>
5479
5480 </div>
5481 <!-- END slide -->
5482
5483
5484 <!-- BEGIN slide -->
5485 <div class="slide">
5486 <img name="img" id="img" width="350" src="images/botticelli.venus.jpg" align=right>
5487 <h1>Idealized MO toolchain</h1>
5488 <p>
5489
5490 </p>
5491 <ul>
5492 <li>Compiler handles modeling</li>
5493
5494 <ul>
5495 <li>Constructs meta objects at compile time</li>
5496 </ul>
5497 <li>VM Opcodes support standard RI</li>
5498 <li>Custom RIs are just objects</li>
5499
5500 <ul>
5501 <li>Bootstrapped using standard runtime objects</li>
5502
5503 <ul>
5504 <li>Method table RI</li>
5505 <li>Named method invocation</li>
5506 </ul></ul></ul>
5507
5508 </div>
5509 <!-- END slide -->
5510
5511
5512 <!-- BEGIN slide -->
5513 <div class="slide">
5514 <img name="img" id="img" width="350" src="images/lolgeeks016.jpg" align=right>
5515 <h1>Perl 6</h1>
5516 <p>
5517
5518 </p>
5519 <small>continued...</small>
5520
5521 </div>
5522 <!-- END slide -->
5523
5524
5525 <!-- BEGIN slide -->
5526 <div class="slide">
5527 <img name="img" id="img" width="350" src="images/lolgeeks016.jpg" align=right>
5528 <h1>Perl 6</h1>
5529 <p>
5530
5531 </p>
5532 <ul>
5533 <li>Perl 6 is the idealized MO toolchain</li>
5534 </ul>
5535 <small>continued...</small>
5536
5537 </div>
5538 <!-- END slide -->
5539
5540
5541 <!-- BEGIN slide -->
5542 <div class="slide">
5543 <img name="img" id="img" width="350" src="images/lolgeeks016.jpg" align=right>
5544 <h1>Perl 6</h1>
5545 <p>
5546
5547 </p>
5548 <ul>
5549 <li>Perl 6 is the idealized MO toolchain</li>
5550
5551 <ul>
5552 <li>Can introduce syntax</li>
5553 </ul></ul>
5554 <small>continued...</small>
5555
5556 </div>
5557 <!-- END slide -->
5558
5559
5560 <!-- BEGIN slide -->
5561 <div class="slide">
5562 <img name="img" id="img" width="350" src="images/lolgeeks016.jpg" align=right>
5563 <h1>Perl 6</h1>
5564 <p>
5565
5566 </p>
5567 <ul>
5568 <li>Perl 6 is the idealized MO toolchain</li>
5569
5570 <ul>
5571 <li>Can introduce syntax</li>
5572
5573 <ul>
5574 <li>Invocation types</li>
5575 </ul></ul></ul>
5576 <small>continued...</small>
5577
5578 </div>
5579 <!-- END slide -->
5580
5581
5582 <!-- BEGIN slide -->
5583 <div class="slide">
5584 <img name="img" id="img" width="350" src="images/lolgeeks016.jpg" align=right>
5585 <h1>Perl 6</h1>
5586 <p>
5587
5588 </p>
5589 <ul>
5590 <li>Perl 6 is the idealized MO toolchain</li>
5591
5592 <ul>
5593 <li>Can introduce syntax</li>
5594
5595 <ul>
5596 <li>Invocation types</li>
5597 <li>Concept declarations</li>
5598 </ul></ul></ul>
5599 <small>continued...</small>
5600
5601 </div>
5602 <!-- END slide -->
5603
5604
5605 <!-- BEGIN slide -->
5606 <div class="slide">
5607 <img name="img" id="img" width="350" src="images/lolgeeks016.jpg" align=right>
5608 <h1>Perl 6</h1>
5609 <p>
5610
5611 </p>
5612 <ul>
5613 <li>Perl 6 is the idealized MO toolchain</li>
5614
5615 <ul>
5616 <li>Can introduce syntax</li>
5617
5618 <ul>
5619 <li>Invocation types</li>
5620 <li>Concept declarations</li>
5621 </ul>
5622 <li>Implement bootstrap RIs in VM opcodes</li>
5623 </ul></ul>
5624 <small>continued...</small>
5625
5626 </div>
5627 <!-- END slide -->
5628
5629
5630 <!-- BEGIN slide -->
5631 <div class="slide">
5632 <img name="img" id="img" width="350" src="images/lolgeeks016.jpg" align=right>
5633 <h1>Perl 6</h1>
5634 <p>
5635
5636 </p>
5637 <ul>
5638 <li>Perl 6 is the idealized MO toolchain</li>
5639
5640 <ul>
5641 <li>Can introduce syntax</li>
5642
5643 <ul>
5644 <li>Invocation types</li>
5645 <li>Concept declarations</li>
5646 </ul>
5647 <li>Implement bootstrap RIs in VM opcodes</li>
5648 </ul>
5649 <li>Pugs might be using MO</li>
5650 </ul>
5651 <small>continued...</small>
5652
5653 </div>
5654 <!-- END slide -->
5655
5656
5657 <!-- BEGIN slide -->
5658 <div class="slide">
5659 <img name="img" id="img" width="350" src="images/lolgeeks016.jpg" align=right>
5660 <h1>Perl 6</h1>
5661 <p>
5662
5663 </p>
5664 <ul>
5665 <li>Perl 6 is the idealized MO toolchain</li>
5666
5667 <ul>
5668 <li>Can introduce syntax</li>
5669
5670 <ul>
5671 <li>Invocation types</li>
5672 <li>Concept declarations</li>
5673 </ul>
5674 <li>Implement bootstrap RIs in VM opcodes</li>
5675 </ul>
5676 <li>Pugs might be using MO</li>
5677
5678 <ul>
5679 <li>I&#39;m not really sure</li>
5680 </ul></ul>
5681 <small>continued...</small>
5682
5683 </div>
5684 <!-- END slide -->
5685
5686
5687 <!-- BEGIN slide -->
5688 <div class="slide">
5689 <img name="img" id="img" width="350" src="images/lolgeeks016.jpg" align=right>
5690 <h1>Perl 6</h1>
5691 <p>
5692
5693 </p>
5694 <ul>
5695 <li>Perl 6 is the idealized MO toolchain</li>
5696
5697 <ul>
5698 <li>Can introduce syntax</li>
5699
5700 <ul>
5701 <li>Invocation types</li>
5702 <li>Concept declarations</li>
5703 </ul>
5704 <li>Implement bootstrap RIs in VM opcodes</li>
5705 </ul>
5706 <li>Pugs might be using MO</li>
5707
5708 <ul>
5709 <li>I&#39;m not really sure</li>
5710 <li>It was ported a while ago</li>
5711 </ul></ul>
5712
5713 </div>
5714 <!-- END slide -->
5715
5716
5717 <!-- BEGIN slide -->
5718 <div class="slide">
5719
5720 <h1>Introducing new concepts</h1>
5721 <small>continued...</small>
5722
5723 </div>
5724 <!-- END slide -->
5725
5726
5727 <!-- BEGIN slide -->
5728 <div class="slide">
5729
5730 <h1>Introducing new concepts</h1>
5731 <ul>
5732 <li>Roles are the shit</li>
5733 </ul>
5734 <small>continued...</small>
5735
5736 </div>
5737 <!-- END slide -->
5738
5739
5740 <!-- BEGIN slide -->
5741 <div class="slide">
5742
5743 <h1>Introducing new concepts</h1>
5744 <ul>
5745 <li>Roles are the shit</li>
5746 <li>But what about next week&#39;s fad?</li>
5747 </ul>
5748 <small>continued...</small>
5749
5750 </div>
5751 <!-- END slide -->
5752
5753
5754 <!-- BEGIN slide -->
5755 <div class="slide">
5756
5757 <h1>Introducing new concepts</h1>
5758 <ul>
5759 <li>Roles are the shit</li>
5760 <li>But what about next week&#39;s fad?</li>
5761 <li>MO lets you introduce a new concept</li>
5762 </ul>
5763 <small>continued...</small>
5764
5765 </div>
5766 <!-- END slide -->
5767
5768
5769 <!-- BEGIN slide -->
5770 <div class="slide">
5771
5772 <h1>Introducing new concepts</h1>
5773 <ul>
5774 <li>Roles are the shit</li>
5775 <li>But what about next week&#39;s fad?</li>
5776 <li>MO lets you introduce a new concept</li>
5777
5778 <ul>
5779 <li>Arbitrary at compile time</li>
5780 </ul></ul>
5781 <small>continued...</small>
5782
5783 </div>
5784 <!-- END slide -->
5785
5786
5787 <!-- BEGIN slide -->
5788 <div class="slide">
5789
5790 <h1>Introducing new concepts</h1>
5791 <ul>
5792 <li>Roles are the shit</li>
5793 <li>But what about next week&#39;s fad?</li>
5794 <li>MO lets you introduce a new concept</li>
5795
5796 <ul>
5797 <li>Arbitrary at compile time</li>
5798 <li>RI protocol at runtime</li>
5799 </ul></ul>
5800
5801 </div>
5802 <!-- END slide -->
5803
5804
5805 <!-- BEGIN slide -->
5806 <div class="slide">
5807
5808 <h1>Example - Prototype Objects</h1>
5809 <small>continued...</small>
5810
5811 </div>
5812 <!-- END slide -->
5813
5814
5815 <!-- BEGIN slide -->
5816 <div class="slide">
5817
5818 <h1>Example - Prototype Objects</h1>
5819 <ul>
5820 <li>One shared RI</li>
5821 </ul>
5822 <pre class="vim">  sub dispatch {
5823     my ( $object, $invocation ) = @_;
5824
5825     my $method = $object-&gt;{ $invocation-&gt;name };
5826
5827     $object-&gt;$method( $invocation-&gt;arguments );
5828   }
5829 </pre>
5830
5831 </div>
5832 <!-- END slide -->
5833
5834
5835 <!-- BEGIN slide -->
5836 <div class="slide">
5837 <img name="img" id="img" width="350" src="images/village_people.jpg" align=right>
5838 <h1>Example - Attribute Grammars</h1>
5839 <p>
5840
5841 </p>
5842 <small>continued...</small>
5843
5844 </div>
5845 <!-- END slide -->
5846
5847
5848 <!-- BEGIN slide -->
5849 <div class="slide">
5850 <img name="img" id="img" width="350" src="images/village_people.jpg" align=right>
5851 <h1>Example - Attribute Grammars</h1>
5852 <p>
5853
5854 </p>
5855 <ul>
5856 <li>Crazy stuff from the 1970s</li>
5857 </ul>
5858 <small>continued...</small>
5859
5860 </div>
5861 <!-- END slide -->
5862
5863
5864 <!-- BEGIN slide -->
5865 <div class="slide">
5866 <img name="img" id="img" width="350" src="images/village_people.jpg" align=right>
5867 <h1>Example - Attribute Grammars</h1>
5868 <p>
5869
5870 </p>
5871 <ul>
5872 <li>Crazy stuff from the 1970s</li>
5873 <li>Renewed interest in <span class="html">&lambda;</span> land </li>
5874 </ul>
5875 <small>continued...</small>
5876
5877 </div>
5878 <!-- END slide -->
5879
5880
5881 <!-- BEGIN slide -->
5882 <div class="slide">
5883 <img name="img" id="img" width="350" src="images/village_people.jpg" align=right>
5884 <h1>Example - Attribute Grammars</h1>
5885 <p>
5886
5887 </p>
5888 <ul>
5889 <li>Crazy stuff from the 1970s</li>
5890 <li>Renewed interest in <span class="html">&lambda;</span> land </li>
5891 <li>Was pretty easy in MO</li>
5892 </ul>
5893
5894 </div>
5895 <!-- END slide -->
5896
5897
5898 <!-- BEGIN slide -->
5899 <div class="slide">
5900 <img name="img" id="img" width="350" src="images/grammar.gif" align=right>
5901 <h1>Attribute Grammer Implementation</h1>
5902 <p>
5903
5904 </p>
5905 <small>continued...</small>
5906
5907 </div>
5908 <!-- END slide -->
5909
5910
5911 <!-- BEGIN slide -->
5912 <div class="slide">
5913 <img name="img" id="img" width="350" src="images/grammar.gif" align=right>
5914 <h1>Attribute Grammer Implementation</h1>
5915 <p>
5916
5917 </p>
5918 <ul>
5919 <li>Introduce new concept objects</li>
5920 </ul>
5921 <small>continued...</small>
5922
5923 </div>
5924 <!-- END slide -->
5925
5926
5927 <!-- BEGIN slide -->
5928 <div class="slide">
5929 <img name="img" id="img" width="350" src="images/grammar.gif" align=right>
5930 <h1>Attribute Grammer Implementation</h1>
5931 <p>
5932
5933 </p>
5934 <ul>
5935 <li>Introduce new concept objects</li>
5936
5937 <ul>
5938 <li>Attribute Grammar</li>
5939 </ul></ul>
5940 <small>continued...</small>
5941
5942 </div>
5943 <!-- END slide -->
5944
5945
5946 <!-- BEGIN slide -->
5947 <div class="slide">
5948 <img name="img" id="img" width="350" src="images/grammar.gif" align=right>
5949 <h1>Attribute Grammer Implementation</h1>
5950 <p>
5951
5952 </p>
5953 <ul>
5954 <li>Introduce new concept objects</li>
5955
5956 <ul>
5957 <li>Attribute Grammar</li>
5958 <li>Attribute Grammer Instance - one per AG per class</li>
5959 </ul></ul>
5960 <small>continued...</small>
5961
5962 </div>
5963 <!-- END slide -->
5964
5965
5966 <!-- BEGIN slide -->
5967 <div class="slide">
5968 <img name="img" id="img" width="350" src="images/grammar.gif" align=right>
5969 <h1>Attribute Grammer Implementation</h1>
5970 <p>
5971
5972 </p>
5973 <ul>
5974 <li>Introduce new concept objects</li>
5975
5976 <ul>
5977 <li>Attribute Grammar</li>
5978 <li>Attribute Grammer Instance - one per AG per class</li>
5979 </ul>
5980 <li>Runtime specialized RI</li>
5981 </ul>
5982 <small>continued...</small>
5983
5984 </div>
5985 <!-- END slide -->
5986
5987
5988 <!-- BEGIN slide -->
5989 <div class="slide">
5990 <img name="img" id="img" width="350" src="images/grammar.gif" align=right>
5991 <h1>Attribute Grammer Implementation</h1>
5992 <p>
5993
5994 </p>
5995 <ul>
5996 <li>Introduce new concept objects</li>
5997
5998 <ul>
5999 <li>Attribute Grammar</li>
6000 <li>Attribute Grammer Instance - one per AG per class</li>
6001 </ul>
6002 <li>Runtime specialized RI</li>
6003
6004 <ul>
6005 <li>Shadows any RI with additional context sensitive methods</li>
6006 </ul></ul>
6007 <small>continued...</small>
6008
6009 </div>
6010 <!-- END slide -->
6011
6012
6013 <!-- BEGIN slide -->
6014 <div class="slide">
6015 <img name="img" id="img" width="350" src="images/grammar.gif" align=right>
6016 <h1>Attribute Grammer Implementation</h1>
6017 <p>
6018
6019 </p>
6020 <ul>
6021 <li>Introduce new concept objects</li>
6022
6023 <ul>
6024 <li>Attribute Grammar</li>
6025 <li>Attribute Grammer Instance - one per AG per class</li>
6026 </ul>
6027 <li>Runtime specialized RI</li>
6028
6029 <ul>
6030 <li>Shadows any RI with additional context sensitive methods</li>
6031 </ul>
6032 <li>Additional runtime support code</li>
6033 </ul>
6034
6035 </div>
6036 <!-- END slide -->
6037
6038
6039 <!-- BEGIN slide -->
6040 <div class="slide">
6041 <img name="img" id="img" width="350" src="images/checklist.jpg" align=right>
6042 <h1>MO TODO</h1>
6043 <p>
6044
6045 </p>
6046 <small>continued...</small>
6047
6048 </div>
6049 <!-- END slide -->
6050
6051
6052 <!-- BEGIN slide -->
6053 <div class="slide">
6054 <img name="img" id="img" width="350" src="images/checklist.jpg" align=right>
6055 <h1>MO TODO</h1>
6056 <p>
6057
6058 </p>
6059 <ul>
6060 <li>Write a sugar layer</li>
6061 </ul>
6062 <small>continued...</small>
6063
6064 </div>
6065 <!-- END slide -->
6066
6067
6068 <!-- BEGIN slide -->
6069 <div class="slide">
6070 <img name="img" id="img" width="350" src="images/checklist.jpg" align=right>
6071 <h1>MO TODO</h1>
6072 <p>
6073
6074 </p>
6075 <ul>
6076 <li>Write a sugar layer</li>
6077
6078 <ul>
6079 <li>Make it fun to use</li>
6080 </ul></ul>
6081 <small>continued...</small>
6082
6083 </div>
6084 <!-- END slide -->
6085
6086
6087 <!-- BEGIN slide -->
6088 <div class="slide">
6089 <img name="img" id="img" width="350" src="images/checklist.jpg" align=right>
6090 <h1>MO TODO</h1>
6091 <p>
6092
6093 </p>
6094 <ul>
6095 <li>Write a sugar layer</li>
6096
6097 <ul>
6098 <li>Make it fun to use</li>
6099 </ul>
6100 <li>Tests</li>
6101 </ul>
6102 <small>continued...</small>
6103
6104 </div>
6105 <!-- END slide -->
6106
6107
6108 <!-- BEGIN slide -->
6109 <div class="slide">
6110 <img name="img" id="img" width="350" src="images/checklist.jpg" align=right>
6111 <h1>MO TODO</h1>
6112 <p>
6113
6114 </p>
6115 <ul>
6116 <li>Write a sugar layer</li>
6117
6118 <ul>
6119 <li>Make it fun to use</li>
6120 </ul>
6121 <li>Tests</li>
6122 <li>Refactor the Class objects</li>
6123 </ul>
6124 <small>continued...</small>
6125
6126 </div>
6127 <!-- END slide -->
6128
6129
6130 <!-- BEGIN slide -->
6131 <div class="slide">
6132 <img name="img" id="img" width="350" src="images/checklist.jpg" align=right>
6133 <h1>MO TODO</h1>
6134 <p>
6135
6136 </p>
6137 <ul>
6138 <li>Write a sugar layer</li>
6139
6140 <ul>
6141 <li>Make it fun to use</li>
6142 </ul>
6143 <li>Tests</li>
6144 <li>Refactor the Class objects</li>
6145
6146 <ul>
6147 <li>Bloated example code</li>
6148 </ul></ul>
6149 <small>continued...</small>
6150
6151 </div>
6152 <!-- END slide -->
6153
6154
6155 <!-- BEGIN slide -->
6156 <div class="slide">
6157 <img name="img" id="img" width="350" src="images/checklist.jpg" align=right>
6158 <h1>MO TODO</h1>
6159 <p>
6160
6161 </p>
6162 <ul>
6163 <li>Write a sugar layer</li>
6164
6165 <ul>
6166 <li>Make it fun to use</li>
6167 </ul>
6168 <li>Tests</li>
6169 <li>Refactor the Class objects</li>
6170
6171 <ul>
6172 <li>Bloated example code</li>
6173 <li>There are some patterns to extract</li>
6174 </ul></ul>
6175 <small>continued...</small>
6176
6177 </div>
6178 <!-- END slide -->
6179
6180
6181 <!-- BEGIN slide -->
6182 <div class="slide">
6183 <img name="img" id="img" width="350" src="images/checklist.jpg" align=right>
6184 <h1>MO TODO</h1>
6185 <p>
6186
6187 </p>
6188 <ul>
6189 <li>Write a sugar layer</li>
6190
6191 <ul>
6192 <li>Make it fun to use</li>
6193 </ul>
6194 <li>Tests</li>
6195 <li>Refactor the Class objects</li>
6196
6197 <ul>
6198 <li>Bloated example code</li>
6199 <li>There are some patterns to extract</li>
6200 </ul>
6201 <li>Self hosting</li>
6202 </ul>
6203
6204 </div>
6205 <!-- END slide -->
6206
6207
6208 <!-- BEGIN slide -->
6209 <div class="slide">
6210
6211 <h1>Self Hosting</h1>
6212 <small>continued...</small>
6213
6214 </div>
6215 <!-- END slide -->
6216
6217
6218 <!-- BEGIN slide -->
6219 <div class="slide">
6220
6221 <h1>Self Hosting</h1>
6222 <ul>
6223 <li>Easier to maintain MO written in Moose</li>
6224 </ul>
6225 <small>continued...</small>
6226
6227 </div>
6228 <!-- END slide -->
6229
6230
6231 <!-- BEGIN slide -->
6232 <div class="slide">
6233
6234 <h1>Self Hosting</h1>
6235 <ul>
6236 <li>Easier to maintain MO written in Moose</li>
6237 <li>Need to have clean syntax</li>
6238 </ul>
6239 <small>continued...</small>
6240
6241 </div>
6242 <!-- END slide -->
6243
6244
6245 <!-- BEGIN slide -->
6246 <div class="slide">
6247
6248 <h1>Self Hosting</h1>
6249 <ul>
6250 <li>Easier to maintain MO written in Moose</li>
6251 <li>Need to have clean syntax</li>
6252 <li>Stable <tt>.pmc</tt> compilation</li>
6253 </ul>
6254
6255 </div>
6256 <!-- END slide -->
6257
6258
6259 <!-- BEGIN slide -->
6260 <div class="slide">
6261 <img name="img" id="img" width="350" src="images/istockphoto_2540021_painted_exclamation_mark.jpg" align=right>
6262 <h1>Conclusion</h1>
6263 <p>
6264
6265 </p>
6266 <small>continued...</small>
6267
6268 </div>
6269 <!-- END slide -->
6270
6271
6272 <!-- BEGIN slide -->
6273 <div class="slide">
6274 <img name="img" id="img" width="350" src="images/istockphoto_2540021_painted_exclamation_mark.jpg" align=right>
6275 <h1>Conclusion</h1>
6276 <p>
6277
6278 </p>
6279 <ul>
6280 <li>Meta code is awesome code</li>
6281 </ul>
6282 <small>continued...</small>
6283
6284 </div>
6285 <!-- END slide -->
6286
6287
6288 <!-- BEGIN slide -->
6289 <div class="slide">
6290 <img name="img" id="img" width="350" src="images/istockphoto_2540021_painted_exclamation_mark.jpg" align=right>
6291 <h1>Conclusion</h1>
6292 <p>
6293
6294 </p>
6295 <ul>
6296 <li>Meta code is awesome code</li>
6297
6298 <ul>
6299 <li>Especially my meta code ;-&#41;</li>
6300 </ul></ul>
6301
6302 </div>
6303 <!-- END slide -->
6304
6305
6306 <!-- BEGIN slide -->
6307 <div class="slide">
6308 <img name="img" id="img" width="350" src="images/istockphoto_2540021_painted_exclamation_mark.jpg" align=right>
6309 <h1>Conclusion</h1>
6310 <p>
6311
6312 </p>
6313 <ul>
6314 <li>Meta code is awesome code</li>
6315 </ul>
6316 <small>continued...</small>
6317
6318 </div>
6319 <!-- END slide -->
6320
6321
6322 <!-- BEGIN slide -->
6323 <div class="slide">
6324 <img name="img" id="img" width="350" src="images/istockphoto_2540021_painted_exclamation_mark.jpg" align=right>
6325 <h1>Conclusion</h1>
6326 <p>
6327
6328 </p>
6329 <ul>
6330 <li>Meta code is awesome code</li>
6331
6332 <ul>
6333 <li>Lets you program in new ways</li>
6334 </ul></ul>
6335 <small>continued...</small>
6336
6337 </div>
6338 <!-- END slide -->
6339
6340
6341 <!-- BEGIN slide -->
6342 <div class="slide">
6343 <img name="img" id="img" width="350" src="images/istockphoto_2540021_painted_exclamation_mark.jpg" align=right>
6344 <h1>Conclusion</h1>
6345 <p>
6346
6347 </p>
6348 <ul>
6349 <li>Meta code is awesome code</li>
6350
6351 <ul>
6352 <li>Lets you program in new ways</li>
6353 <li>Helps you take care of your other code</li>
6354 </ul></ul>
6355 <small>continued...</small>
6356
6357 </div>
6358 <!-- END slide -->
6359
6360
6361 <!-- BEGIN slide -->
6362 <div class="slide">
6363 <img name="img" id="img" width="350" src="images/istockphoto_2540021_painted_exclamation_mark.jpg" align=right>
6364 <h1>Conclusion</h1>
6365 <p>
6366
6367 </p>
6368 <ul>
6369 <li>Meta code is awesome code</li>
6370
6371 <ul>
6372 <li>Lets you program in new ways</li>
6373 <li>Helps you take care of your other code</li>
6374 </ul>
6375 <li>Meta code is important code</li>
6376 </ul>
6377 <small>continued...</small>
6378
6379 </div>
6380 <!-- END slide -->
6381
6382
6383 <!-- BEGIN slide -->
6384 <div class="slide">
6385 <img name="img" id="img" width="350" src="images/istockphoto_2540021_painted_exclamation_mark.jpg" align=right>
6386 <h1>Conclusion</h1>
6387 <p>
6388
6389 </p>
6390 <ul>
6391 <li>Meta code is awesome code</li>
6392
6393 <ul>
6394 <li>Lets you program in new ways</li>
6395 <li>Helps you take care of your other code</li>
6396 </ul>
6397 <li>Meta code is important code</li>
6398
6399 <ul>
6400 <li>It can affect <strong>anything</strong></li>
6401 </ul></ul>
6402 <small>continued...</small>
6403
6404 </div>
6405 <!-- END slide -->
6406
6407
6408 <!-- BEGIN slide -->
6409 <div class="slide">
6410 <img name="img" id="img" width="350" src="images/istockphoto_2540021_painted_exclamation_mark.jpg" align=right>
6411 <h1>Conclusion</h1>
6412 <p>
6413
6414 </p>
6415 <ul>
6416 <li>Meta code is awesome code</li>
6417
6418 <ul>
6419 <li>Lets you program in new ways</li>
6420 <li>Helps you take care of your other code</li>
6421 </ul>
6422 <li>Meta code is important code</li>
6423
6424 <ul>
6425 <li>It can affect <strong>anything</strong></li>
6426 <li>Keep it minimalistic, and clearly defined</li>
6427 </ul></ul>
6428 <small>continued...</small>
6429
6430 </div>
6431 <!-- END slide -->
6432
6433
6434 <!-- BEGIN slide -->
6435 <div class="slide">
6436 <img name="img" id="img" width="350" src="images/istockphoto_2540021_painted_exclamation_mark.jpg" align=right>
6437 <h1>Conclusion</h1>
6438 <p>
6439
6440 </p>
6441 <ul>
6442 <li>Meta code is awesome code</li>
6443
6444 <ul>
6445 <li>Lets you program in new ways</li>
6446 <li>Helps you take care of your other code</li>
6447 </ul>
6448 <li>Meta code is important code</li>
6449
6450 <ul>
6451 <li>It can affect <strong>anything</strong></li>
6452 <li>Keep it minimalistic, and clearly defined</li>
6453 <li>No spaghetti monsters</li>
6454 </ul></ul>
6455 <small>continued...</small>
6456
6457 </div>
6458 <!-- END slide -->
6459
6460
6461 <!-- BEGIN slide -->
6462 <div class="slide">
6463 <img name="img" id="img" width="350" src="images/istockphoto_2540021_painted_exclamation_mark.jpg" align=right>
6464 <h1>Conclusion</h1>
6465 <p>
6466
6467 </p>
6468 <ul>
6469 <li>Meta code is awesome code</li>
6470
6471 <ul>
6472 <li>Lets you program in new ways</li>
6473 <li>Helps you take care of your other code</li>
6474 </ul>
6475 <li>Meta code is important code</li>
6476
6477 <ul>
6478 <li>It can affect <strong>anything</strong></li>
6479 <li>Keep it minimalistic, and clearly defined</li>
6480 <li>No spaghetti monsters</li>
6481 </ul>
6482 <li>Meta code can be simple</li>
6483 </ul>
6484 <small>continued...</small>
6485
6486 </div>
6487 <!-- END slide -->
6488
6489
6490 <!-- BEGIN slide -->
6491 <div class="slide">
6492 <img name="img" id="img" width="350" src="images/istockphoto_2540021_painted_exclamation_mark.jpg" align=right>
6493 <h1>Conclusion</h1>
6494 <p>
6495
6496 </p>
6497 <ul>
6498 <li>Meta code is awesome code</li>
6499
6500 <ul>
6501 <li>Lets you program in new ways</li>
6502 <li>Helps you take care of your other code</li>
6503 </ul>
6504 <li>Meta code is important code</li>
6505
6506 <ul>
6507 <li>It can affect <strong>anything</strong></li>
6508 <li>Keep it minimalistic, and clearly defined</li>
6509 <li>No spaghetti monsters</li>
6510 </ul>
6511 <li>Meta code can be simple</li>
6512
6513 <ul>
6514 <li>Only complicated if you aren&#39;t careful</li>
6515 </ul></ul>
6516
6517 </div>
6518 <!-- END slide -->
6519
6520
6521 <!-- BEGIN slide -->
6522 <div class="slide">
6523 <img name="img" id="img" width="350" src="images/thanks.jpg" align=right>
6524 <h1>BIE FRENDS</h1>
6525 <p>
6526
6527 </p>
6528
6529 </div>
6530 <!-- END slide -->
6531
6532
6533 </body>
6534 </html>
6535 <!-- END s5 -->