--- /dev/null
+<!-- BEGIN s5 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>meta meta meta meta</title>
+<meta name="generator" content="S5" />
+<meta name="version" content="S5 1.0" />
+<meta name="presdate" content="20041007" />
+<meta name="author" content="Eric A. Meyer" />
+<link rel="stylesheet" href="ui/slides.css" type="text/css" media="projection" id="slideProj" />
+<link rel="stylesheet" href="ui/opera.css" type="text/css" media="projection" id="operaFix" />
+<link rel="stylesheet" href="ui/print.css" type="text/css" media="print" id="slidePrint" />
+<script src="ui/slides.js" type="text/javascript"></script>
+</head>
+<body>
+
+<div class="layout">
+ <div id="currentSlide"></div>
+ <div id="header"></div>
+ <div id="footer">
+ <h2>יובל קוג'מן</h2>
+ <h2>nothingmuch@woobling.org</h2>
+ <div id="controls"></div>
+ </div>
+</div>
+
+<div class="slide">
+ <h1>Object Meta Programming</h1>
+ <h2>YAPC::EU::2007</h2>
+ <h3>Aug 29, 2007</h3>
+</div>
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/promopi.jpg" align=right>
+<h1>HAI FRENDS</h1>
+<p>
+
+</p>
+<h2>My name is Yuval</h2>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/7104_Squares_with_Concentric_Circles_Kandinsky_Wassily.jpg" align=right>
+<h1>Meta Programming</h1>
+<p>
+
+</p>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/door.jpg" align=right>
+<h1>Introduction</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/door.jpg" align=right>
+<h1>Introduction</h1>
+<p>
+
+</p>
+<ul>
+<li>Meta programming</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/door.jpg" align=right>
+<h1>Introduction</h1>
+<p>
+
+</p>
+<ul>
+<li>Meta programming</li>
+<li>writing <em>code</em> which <em>outputs</em> or <em>manipulates</em> <em>code</em></li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/manimal.jpg" align=right>
+<h1>Many forms</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/manimal.jpg" align=right>
+<h1>Many forms</h1>
+<p>
+
+</p>
+<ul>
+<li>string <tt>eval</tt></li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/manimal.jpg" align=right>
+<h1>Many forms</h1>
+<p>
+
+</p>
+<ul>
+<li>string <tt>eval</tt></li>
+<li><tt>%::</tt></li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/manimal.jpg" align=right>
+<h1>Many forms</h1>
+<p>
+
+</p>
+<ul>
+<li>string <tt>eval</tt></li>
+<li><tt>%::</tt></li>
+<li>closure generators</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/manimal.jpg" align=right>
+<h1>Many forms</h1>
+<p>
+
+</p>
+<ul>
+<li>string <tt>eval</tt></li>
+<li><tt>%::</tt></li>
+<li>closure generators</li>
+<li>macros</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/manimal.jpg" align=right>
+<h1>Many forms</h1>
+<p>
+
+</p>
+<ul>
+<li>string <tt>eval</tt></li>
+<li><tt>%::</tt></li>
+<li>closure generators</li>
+<li>macros</li>
+<li>real macros</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/manimal.jpg" align=right>
+<h1>Many forms</h1>
+<p>
+
+</p>
+<ul>
+<li>string <tt>eval</tt></li>
+<li><tt>%::</tt></li>
+<li>closure generators</li>
+<li>macros</li>
+<li>real macros</li>
+<li>compilers</li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/Flying_Spaghetti_Monster-thumb.jpg" align=right>
+<h1>Many forms</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/Flying_Spaghetti_Monster-thumb.jpg" align=right>
+<h1>Many forms</h1>
+<p>
+
+</p>
+<ul>
+<li>Home grown snippets</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/Flying_Spaghetti_Monster-thumb.jpg" align=right>
+<h1>Many forms</h1>
+<p>
+
+</p>
+<ul>
+<li>Home grown snippets</li>
+<li>Home grown packages</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/Flying_Spaghetti_Monster-thumb.jpg" align=right>
+<h1>Many forms</h1>
+<p>
+
+</p>
+<ul>
+<li>Home grown snippets</li>
+<li>Home grown packages</li>
+<li>Stuff on the CPAN (e.g. <tt>Class::Accessor</tt>, <tt>Code::Perl</tt>)</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/Flying_Spaghetti_Monster-thumb.jpg" align=right>
+<h1>Many forms</h1>
+<p>
+
+</p>
+<ul>
+<li>Home grown snippets</li>
+<li>Home grown packages</li>
+<li>Stuff on the CPAN (e.g. <tt>Class::Accessor</tt>, <tt>Code::Perl</tt>)</li>
+<li>Large systems (<tt>Template::Toolkit</tt>)</li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/16_peer_pressure_smoking.gif" align=right>
+<h1>Summary</h1>
+<p>
+
+</p>
+<ul>
+<li>You should already know it</li>
+<li>You probably do it</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/16_peer_pressure_smoking.gif" align=right>
+<h1>Summary</h1>
+<p>
+
+</p>
+<ul>
+<li>You should already know it</li>
+<li>You probably do it</li>
+<li>That's the intended audience anyway ;-)</li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Object Meta Programming</h1>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Object Meta Programming</h1>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Object Meta Programming</h1>
+<ul>
+<li>Code that outputs or manipulates <em>object oriented code</em></li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Object Meta Programming</h1>
+<ul>
+<li>Code that outputs or manipulates <em>object oriented code</em></li>
+<li>Often written in OO</li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/ApplePieSlice.jpg" align=right>
+<h1>Simple Examples</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/ApplePieSlice.jpg" align=right>
+<h1>Simple Examples</h1>
+<p>
+
+</p>
+<ul>
+<li><tt>Class::Accessor</tt>, <tt>Class::InsideOut</tt></li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/ApplePieSlice.jpg" align=right>
+<h1>Simple Examples</h1>
+<p>
+
+</p>
+<ul>
+<li><tt>Class::Accessor</tt>, <tt>Class::InsideOut</tt></li>
+
+<ul>
+<li>Generates accessor methods</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/ApplePieSlice.jpg" align=right>
+<h1>Simple Examples</h1>
+<p>
+
+</p>
+<ul>
+<li><tt>Class::Accessor</tt>, <tt>Class::InsideOut</tt></li>
+
+<ul>
+<li>Generates accessor methods</li>
+</ul>
+<li><tt>Class::Prototyped</tt></li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/ApplePieSlice.jpg" align=right>
+<h1>Simple Examples</h1>
+<p>
+
+</p>
+<ul>
+<li><tt>Class::Accessor</tt>, <tt>Class::InsideOut</tt></li>
+
+<ul>
+<li>Generates accessor methods</li>
+</ul>
+<li><tt>Class::Prototyped</tt></li>
+
+<ul>
+<li>Prototype object support in Perl</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/ApplePieSlice.jpg" align=right>
+<h1>Simple Examples</h1>
+<p>
+
+</p>
+<ul>
+<li><tt>Class::Accessor</tt>, <tt>Class::InsideOut</tt></li>
+
+<ul>
+<li>Generates accessor methods</li>
+</ul>
+<li><tt>Class::Prototyped</tt></li>
+
+<ul>
+<li>Prototype object support in Perl</li>
+</ul>
+<li>Lots of stuff on the CPAN</li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
+<h1>Modeling OO</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
+<h1>Modeling OO</h1>
+<p>
+
+</p>
+<ul>
+<li>High level object meta programming</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
+<h1>Modeling OO</h1>
+<p>
+
+</p>
+<ul>
+<li>High level object meta programming</li>
+
+<ul>
+<li>The current trend</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
+<h1>Modeling OO</h1>
+<p>
+
+</p>
+<ul>
+<li>High level object meta programming</li>
+
+<ul>
+<li>The current trend</li>
+<li>The picture illustrates an object modelling with class =)</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
+<h1>Modeling OO</h1>
+<p>
+
+</p>
+<ul>
+<li>High level object meta programming</li>
+
+<ul>
+<li>The current trend</li>
+<li>The picture illustrates an object modelling with class =)</li>
+<li>Seriously though...</li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
+<h1>Modeling OO</h1>
+<p>
+
+</p>
+<ul>
+<li>High level object meta programming</li>
+<li>What is a class?</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
+<h1>Modeling OO</h1>
+<p>
+
+</p>
+<ul>
+<li>High level object meta programming</li>
+<li>What is a class?</li>
+</ul>
+<pre class="vim"> class Class {
+ has @isa;
+ has %methods;
+ has %attributes;
+
+ ...
+ }
+</pre>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
+<h1>Modeling OO</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
+<h1>Modeling OO</h1>
+<p>
+
+</p>
+<ul>
+<li>Implementing OO</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
+<h1>Modeling OO</h1>
+<p>
+
+</p>
+<ul>
+<li>Implementing OO</li>
+
+<ul>
+<li>In OO</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
+<h1>Modeling OO</h1>
+<p>
+
+</p>
+<ul>
+<li>Implementing OO</li>
+
+<ul>
+<li>In OO</li>
+</ul>
+<li>Meta objects:</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
+<h1>Modeling OO</h1>
+<p>
+
+</p>
+<ul>
+<li>Implementing OO</li>
+
+<ul>
+<li>In OO</li>
+</ul>
+<li>Meta objects:</li>
+
+<ul>
+<li>Class</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
+<h1>Modeling OO</h1>
+<p>
+
+</p>
+<ul>
+<li>Implementing OO</li>
+
+<ul>
+<li>In OO</li>
+</ul>
+<li>Meta objects:</li>
+
+<ul>
+<li>Class</li>
+<li>Method</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/vogue.jpg" align=right>
+<h1>Modeling OO</h1>
+<p>
+
+</p>
+<ul>
+<li>Implementing OO</li>
+
+<ul>
+<li>In OO</li>
+</ul>
+<li>Meta objects:</li>
+
+<ul>
+<li>Class</li>
+<li>Method</li>
+<li>Attribute</li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Example class</h1>
+<pre class="vim"> class Point {
+ has $x;
+ has $y;
+
+ method distance_to { ... }
+ }
+</pre>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Modeled with objects</h1>
+<pre class="vim"> Class-><span class="synStatement">new</span>(
+ <span class="synConstant">attributes </span>=> [
+ Attribute-><span class="synStatement">new</span>( <span class="synConstant">name </span>=> <span class="synConstant">'$x'</span> ),
+ Attribute-><span class="synStatement">new</span>( <span class="synConstant">name </span>=> <span class="synConstant">'$y'</span> ),
+ ],
+ <span class="synConstant">methods </span>=> [
+ Method-><span class="synStatement">new</span>(
+ <span class="synConstant">name </span>=> <span class="synConstant">"distance_to"</span>,
+ <span class="synConstant">definition </span>=><span class="synIdentifier"> </span><span class="synStatement">sub</span><span class="synIdentifier"> </span>{ ... }
+ ),
+ ],
+ );
+</pre>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/istockphoto_944779_reception_bell.jpg" align=right>
+<h1>Metamodel Services</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/istockphoto_944779_reception_bell.jpg" align=right>
+<h1>Metamodel Services</h1>
+<p>
+
+</p>
+<ul>
+<li>Form</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/istockphoto_944779_reception_bell.jpg" align=right>
+<h1>Metamodel Services</h1>
+<p>
+
+</p>
+<ul>
+<li>Form</li>
+
+<ul>
+<li>Introspection/Reflection</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/istockphoto_944779_reception_bell.jpg" align=right>
+<h1>Metamodel Services</h1>
+<p>
+
+</p>
+<ul>
+<li>Form</li>
+
+<ul>
+<li>Introspection/Reflection</li>
+</ul>
+<li>Function</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/istockphoto_944779_reception_bell.jpg" align=right>
+<h1>Metamodel Services</h1>
+<p>
+
+</p>
+<ul>
+<li>Form</li>
+
+<ul>
+<li>Introspection/Reflection</li>
+</ul>
+<li>Function</li>
+
+<ul>
+<li>Class generation</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/istockphoto_944779_reception_bell.jpg" align=right>
+<h1>Metamodel Services</h1>
+<p>
+
+</p>
+<ul>
+<li>Form</li>
+
+<ul>
+<li>Introspection/Reflection</li>
+</ul>
+<li>Function</li>
+
+<ul>
+<li>Class generation</li>
+<li>Class transformation</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/istockphoto_944779_reception_bell.jpg" align=right>
+<h1>Metamodel Services</h1>
+<p>
+
+</p>
+<ul>
+<li>Form</li>
+
+<ul>
+<li>Introspection/Reflection</li>
+</ul>
+<li>Function</li>
+
+<ul>
+<li>Class generation</li>
+<li>Class transformation</li>
+</ul>
+<li>Pattern packaging</li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
+<h1>Case Study</h1>
+<p>
+
+</p>
+<h2>Moose</h2>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
+<h1>Case Study</h1>
+<p>
+
+</p>
+<h2>Moose</h2>
+<ul>
+<li>A deep meta object system</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
+<h1>Case Study</h1>
+<p>
+
+</p>
+<h2>Moose</h2>
+<ul>
+<li>A deep meta object system</li>
+<li>4 layers deep</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
+<h1>Case Study</h1>
+<p>
+
+</p>
+<h2>Moose</h2>
+<ul>
+<li>A deep meta object system</li>
+<li>4 layers deep</li>
+
+<ul>
+<li>Syntactic sugar</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
+<h1>Case Study</h1>
+<p>
+
+</p>
+<h2>Moose</h2>
+<ul>
+<li>A deep meta object system</li>
+<li>4 layers deep</li>
+
+<ul>
+<li>Syntactic sugar</li>
+<li>Custom metaclasses</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
+<h1>Case Study</h1>
+<p>
+
+</p>
+<h2>Moose</h2>
+<ul>
+<li>A deep meta object system</li>
+<li>4 layers deep</li>
+
+<ul>
+<li>Syntactic sugar</li>
+<li>Custom metaclasses</li>
+<li>Class::MOP</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
+<h1>Case Study</h1>
+<p>
+
+</p>
+<h2>Moose</h2>
+<ul>
+<li>A deep meta object system</li>
+<li>4 layers deep</li>
+
+<ul>
+<li>Syntactic sugar</li>
+<li>Custom metaclasses</li>
+<li>Class::MOP</li>
+<li>Perl's native OO</li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/perl-camel.gif" align=right>
+<h1>Perl's native OO</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/perl-camel.gif" align=right>
+<h1>Perl's native OO</h1>
+<p>
+
+</p>
+<ul>
+<li>Minimalistic</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/perl-camel.gif" align=right>
+<h1>Perl's native OO</h1>
+<p>
+
+</p>
+<ul>
+<li>Minimalistic</li>
+
+<ul>
+<li>Class = Package = Symbol table hash</li>
+<li>Inheritence tree embedded in <tt>@ISA</tt> entry</li>
+<li><tt>bless</tt> links data to a class</li>
+<li><tt>-></tt></li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/perl-camel.gif" align=right>
+<h1>Perl's native OO</h1>
+<p>
+
+</p>
+<ul>
+<li>Minimalistic</li>
+
+<ul>
+<li>Class = Package = Symbol table hash</li>
+<li>Inheritence tree embedded in <tt>@ISA</tt> entry</li>
+<li><tt>bless</tt> links data to a class</li>
+<li><tt>-></tt></li>
+</ul>
+<li>Insanely flexible</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/perl-camel.gif" align=right>
+<h1>Perl's native OO</h1>
+<p>
+
+</p>
+<ul>
+<li>Minimalistic</li>
+
+<ul>
+<li>Class = Package = Symbol table hash</li>
+<li>Inheritence tree embedded in <tt>@ISA</tt> entry</li>
+<li><tt>bless</tt> links data to a class</li>
+<li><tt>-></tt></li>
+</ul>
+<li>Insanely flexible</li>
+<li>Pretty klunky</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/perl-camel.gif" align=right>
+<h1>Perl's native OO</h1>
+<p>
+
+</p>
+<ul>
+<li>Minimalistic</li>
+
+<ul>
+<li>Class = Package = Symbol table hash</li>
+<li>Inheritence tree embedded in <tt>@ISA</tt> entry</li>
+<li><tt>bless</tt> links data to a class</li>
+<li><tt>-></tt></li>
+</ul>
+<li>Insanely flexible</li>
+<li>Pretty klunky</li>
+<li>Written in C (not very accessible)</li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
+<h1>Class::MOP</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
+<h1>Class::MOP</h1>
+<p>
+
+</p>
+<ul>
+<li>port of CLOS, more or less</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
+<h1>Class::MOP</h1>
+<p>
+
+</p>
+<ul>
+<li>port of CLOS, more or less</li>
+<li>MOP = Meta Object Protocol</li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
+<h1>Class::MOP</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
+<h1>Class::MOP</h1>
+<p>
+
+</p>
+<ul>
+<li>Model</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
+<h1>Class::MOP</h1>
+<p>
+
+</p>
+<ul>
+<li>Model</li>
+
+<ul>
+<li><tt>Class::MOP::Class</tt></li>
+<li><tt>Class::MOP::Method</tt></li>
+<li><tt>Class::MOP::Attribute</tt></li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
+<h1>Class::MOP</h1>
+<p>
+
+</p>
+<ul>
+<li>Model</li>
+
+<ul>
+<li><tt>Class::MOP::Class</tt></li>
+<li><tt>Class::MOP::Method</tt></li>
+<li><tt>Class::MOP::Attribute</tt></li>
+</ul>
+<li>Easy interface</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
+<h1>Class::MOP</h1>
+<p>
+
+</p>
+<ul>
+<li>Model</li>
+
+<ul>
+<li><tt>Class::MOP::Class</tt></li>
+<li><tt>Class::MOP::Method</tt></li>
+<li><tt>Class::MOP::Attribute</tt></li>
+</ul>
+<li>Easy interface</li>
+
+<ul>
+<li>Introspection</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
+<h1>Class::MOP</h1>
+<p>
+
+</p>
+<ul>
+<li>Model</li>
+
+<ul>
+<li><tt>Class::MOP::Class</tt></li>
+<li><tt>Class::MOP::Method</tt></li>
+<li><tt>Class::MOP::Attribute</tt></li>
+</ul>
+<li>Easy interface</li>
+
+<ul>
+<li>Introspection</li>
+<li>Transformation</li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
+<h1>Class::MOP</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
+<h1>Class::MOP</h1>
+<p>
+
+</p>
+<ul>
+<li>Can "parse" packages into meta objects</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
+<h1>Class::MOP</h1>
+<p>
+
+</p>
+<ul>
+<li>Can "parse" packages into meta objects</li>
+<li>Modifying the objects writes back to packages</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
+<h1>Class::MOP</h1>
+<p>
+
+</p>
+<ul>
+<li>Can "parse" packages into meta objects</li>
+<li>Modifying the objects writes back to packages</li>
+<li>Code generation</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
+<h1>Class::MOP</h1>
+<p>
+
+</p>
+<ul>
+<li>Can "parse" packages into meta objects</li>
+<li>Modifying the objects writes back to packages</li>
+<li>Code generation</li>
+
+<ul>
+<li>Accessors from attributes</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
+<h1>Class::MOP</h1>
+<p>
+
+</p>
+<ul>
+<li>Can "parse" packages into meta objects</li>
+<li>Modifying the objects writes back to packages</li>
+<li>Code generation</li>
+
+<ul>
+<li>Accessors from attributes</li>
+<li>Constructor from attributes</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/MOP.jpg" align=right>
+<h1>Class::MOP</h1>
+<p>
+
+</p>
+<ul>
+<li>Can "parse" packages into meta objects</li>
+<li>Modifying the objects writes back to packages</li>
+<li>Code generation</li>
+
+<ul>
+<li>Accessors from attributes</li>
+<li>Constructor from attributes</li>
+<li>Method modifiers</li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
+<h1>Moose's custom metaclasses</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
+<h1>Moose's custom metaclasses</h1>
+<p>
+
+</p>
+<ul>
+<li>Subclasses of <tt>Class::MOP::Class</tt> et al</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
+<h1>Moose's custom metaclasses</h1>
+<p>
+
+</p>
+<ul>
+<li>Subclasses of <tt>Class::MOP::Class</tt> et al</li>
+<li>More fun features</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
+<h1>Moose's custom metaclasses</h1>
+<p>
+
+</p>
+<ul>
+<li>Subclasses of <tt>Class::MOP::Class</tt> et al</li>
+<li>More fun features</li>
+
+<ul>
+<li>Roles</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
+<h1>Moose's custom metaclasses</h1>
+<p>
+
+</p>
+<ul>
+<li>Subclasses of <tt>Class::MOP::Class</tt> et al</li>
+<li>More fun features</li>
+
+<ul>
+<li>Roles</li>
+<li><tt>BUILD</tt> etc a la Perl 6</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/a_moose.gif" align=right>
+<h1>Moose's custom metaclasses</h1>
+<p>
+
+</p>
+<ul>
+<li>Subclasses of <tt>Class::MOP::Class</tt> et al</li>
+<li>More fun features</li>
+
+<ul>
+<li>Roles</li>
+<li><tt>BUILD</tt> etc a la Perl 6</li>
+</ul>
+<li>Type constraints</li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/sugar.jpg" align=right>
+<h1>Moose sugar layer</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/sugar.jpg" align=right>
+<h1>Moose sugar layer</h1>
+<p>
+
+</p>
+<ul>
+<li>Pseudo-declarative syntax</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/sugar.jpg" align=right>
+<h1>Moose sugar layer</h1>
+<p>
+
+</p>
+<ul>
+<li>Pseudo-declarative syntax</li>
+<li>Maps to metaclass manipulations</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/sugar.jpg" align=right>
+<h1>Moose sugar layer</h1>
+<p>
+
+</p>
+<ul>
+<li>Pseudo-declarative syntax</li>
+<li>Maps to metaclass manipulations</li>
+</ul>
+<pre class="vim"> has foo => ( is => "rw" );
+</pre>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/sugar.jpg" align=right>
+<h1>Moose sugar layer</h1>
+<p>
+
+</p>
+<ul>
+<li>Pseudo-declarative syntax</li>
+<li>Maps to metaclass manipulations</li>
+</ul>
+<pre class="vim"> has foo => ( is => "rw" );
+</pre>
+<ul>
+<li>becomes</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/sugar.jpg" align=right>
+<h1>Moose sugar layer</h1>
+<p>
+
+</p>
+<ul>
+<li>Pseudo-declarative syntax</li>
+<li>Maps to metaclass manipulations</li>
+</ul>
+<pre class="vim"> has foo => ( is => "rw" );
+</pre>
+<ul>
+<li>becomes</li>
+</ul>
+<pre class="vim"> $metaclass->add_attribute(
+ Moose::Meta::Attribute->new(
+ foo => ( is => "rw" ),
+ )
+ );
+</pre>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/p-seal-at-toronto-zoo.jpg" align=right>
+<h1>Moose vs. Class::Accessor</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/p-seal-at-toronto-zoo.jpg" align=right>
+<h1>Moose vs. Class::Accessor</h1>
+<p>
+
+</p>
+<ul>
+<li>All that bloat just for the <tt>has</tt> syntax?</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/p-seal-at-toronto-zoo.jpg" align=right>
+<h1>Moose vs. Class::Accessor</h1>
+<p>
+
+</p>
+<ul>
+<li>All that bloat just for the <tt>has</tt> syntax?</li>
+<li><strong>NO!</strong></li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/p-seal-at-toronto-zoo.jpg" align=right>
+<h1>Moose vs. Class::Accessor</h1>
+<p>
+
+</p>
+<ul>
+<li>All that bloat just for the <tt>has</tt> syntax?</li>
+<li><strong>NO!</strong></li>
+<li>Pattern packaging</li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/401.jpg" align=right>
+<h1>MooseX::</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/401.jpg" align=right>
+<h1>MooseX::</h1>
+<p>
+
+</p>
+<ul>
+<li>Packaged meta code</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/401.jpg" align=right>
+<h1>MooseX::</h1>
+<p>
+
+</p>
+<ul>
+<li>Packaged meta code</li>
+<li>Pretty clean</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/401.jpg" align=right>
+<h1>MooseX::</h1>
+<p>
+
+</p>
+<ul>
+<li>Packaged meta code</li>
+<li>Pretty clean</li>
+<li>Mostly composable</li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/401.jpg" align=right>
+<h1>MooseX::</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/401.jpg" align=right>
+<h1>MooseX::</h1>
+<p>
+
+</p>
+<ul>
+<li><tt>MooseX::Storage</tt></li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/401.jpg" align=right>
+<h1>MooseX::</h1>
+<p>
+
+</p>
+<ul>
+<li><tt>MooseX::Storage</tt></li>
+
+<ul>
+<li>Customizable serialization through metaprogramming</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/401.jpg" align=right>
+<h1>MooseX::</h1>
+<p>
+
+</p>
+<ul>
+<li><tt>MooseX::Storage</tt></li>
+
+<ul>
+<li>Customizable serialization through metaprogramming</li>
+</ul>
+<li><tt>MooseX::AttributeHelpers</tt></li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/401.jpg" align=right>
+<h1>MooseX::</h1>
+<p>
+
+</p>
+<ul>
+<li><tt>MooseX::Storage</tt></li>
+
+<ul>
+<li>Customizable serialization through metaprogramming</li>
+</ul>
+<li><tt>MooseX::AttributeHelpers</tt></li>
+
+<ul>
+<li>Additional methods for collection type attributes</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/401.jpg" align=right>
+<h1>MooseX::</h1>
+<p>
+
+</p>
+<ul>
+<li><tt>MooseX::Storage</tt></li>
+
+<ul>
+<li>Customizable serialization through metaprogramming</li>
+</ul>
+<li><tt>MooseX::AttributeHelpers</tt></li>
+
+<ul>
+<li>Additional methods for collection type attributes</li>
+</ul>
+<li><tt>MooseX::Getopt</tt></li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/401.jpg" align=right>
+<h1>MooseX::</h1>
+<p>
+
+</p>
+<ul>
+<li><tt>MooseX::Storage</tt></li>
+
+<ul>
+<li>Customizable serialization through metaprogramming</li>
+</ul>
+<li><tt>MooseX::AttributeHelpers</tt></li>
+
+<ul>
+<li>Additional methods for collection type attributes</li>
+</ul>
+<li><tt>MooseX::Getopt</tt></li>
+
+<ul>
+<li>Additional constructor compiles attributes into a <tt>Getopt</tt> spec</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/401.jpg" align=right>
+<h1>MooseX::</h1>
+<p>
+
+</p>
+<ul>
+<li><tt>MooseX::Storage</tt></li>
+
+<ul>
+<li>Customizable serialization through metaprogramming</li>
+</ul>
+<li><tt>MooseX::AttributeHelpers</tt></li>
+
+<ul>
+<li>Additional methods for collection type attributes</li>
+</ul>
+<li><tt>MooseX::Getopt</tt></li>
+
+<ul>
+<li>Additional constructor compiles attributes into a <tt>Getopt</tt> spec</li>
+</ul>
+<li><tt>MooseX::IOC</tt></li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/401.jpg" align=right>
+<h1>MooseX::</h1>
+<p>
+
+</p>
+<ul>
+<li><tt>MooseX::Storage</tt></li>
+
+<ul>
+<li>Customizable serialization through metaprogramming</li>
+</ul>
+<li><tt>MooseX::AttributeHelpers</tt></li>
+
+<ul>
+<li>Additional methods for collection type attributes</li>
+</ul>
+<li><tt>MooseX::Getopt</tt></li>
+
+<ul>
+<li>Additional constructor compiles attributes into a <tt>Getopt</tt> spec</li>
+</ul>
+<li><tt>MooseX::IOC</tt></li>
+
+<ul>
+<li>Inversion of control integrated into the object system</li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/cute_moose.jpg" align=right>
+<h1>The point of Moose</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/cute_moose.jpg" align=right>
+<h1>The point of Moose</h1>
+<p>
+
+</p>
+<ul>
+<li>OO is less tedious</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/cute_moose.jpg" align=right>
+<h1>The point of Moose</h1>
+<p>
+
+</p>
+<ul>
+<li>OO is less tedious</li>
+<li>Helps you write meta code</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/cute_moose.jpg" align=right>
+<h1>The point of Moose</h1>
+<p>
+
+</p>
+<ul>
+<li>OO is less tedious</li>
+<li>Helps you write meta code</li>
+
+<ul>
+<li>Good APIs promote clean code</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/cute_moose.jpg" align=right>
+<h1>The point of Moose</h1>
+<p>
+
+</p>
+<ul>
+<li>OO is less tedious</li>
+<li>Helps you write meta code</li>
+
+<ul>
+<li>Good APIs promote clean code</li>
+<li>Easier to build on existing base</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/cute_moose.jpg" align=right>
+<h1>The point of Moose</h1>
+<p>
+
+</p>
+<ul>
+<li>OO is less tedious</li>
+<li>Helps you write meta code</li>
+
+<ul>
+<li>Good APIs promote clean code</li>
+<li>Easier to build on existing base</li>
+<li>Conventions and structure let you play well with others (<tt>MooseX::</tt>)</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/cute_moose.jpg" align=right>
+<h1>The point of Moose</h1>
+<p>
+
+</p>
+<ul>
+<li>OO is less tedious</li>
+<li>Helps you write meta code</li>
+
+<ul>
+<li>Good APIs promote clean code</li>
+<li>Easier to build on existing base</li>
+<li>Conventions and structure let you play well with others (<tt>MooseX::</tt>)</li>
+<li>Introspectable & tranformable metamodel</li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/MainHeaderPic_5.gif" align=right>
+<h1>Another Case Study</h1>
+<p>
+
+</p>
+<h2>ORMs</h2>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/MainHeaderPic_5.gif" align=right>
+<h1>Another Case Study</h1>
+<p>
+
+</p>
+<h2>ORMs</h2>
+<ul>
+<li>Are <strong>HARD</strong></li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/MainHeaderPic_5.gif" align=right>
+<h1>Another Case Study</h1>
+<p>
+
+</p>
+<h2>ORMs</h2>
+<ul>
+<li>Are <strong>HARD</strong></li>
+<li>Not even fun like the picture</li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/legacyDataSources.jpg" align=right>
+<h1>ORMs</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/legacyDataSources.jpg" align=right>
+<h1>ORMs</h1>
+<p>
+
+</p>
+<ul>
+<li>Modeling</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/legacyDataSources.jpg" align=right>
+<h1>ORMs</h1>
+<p>
+
+</p>
+<ul>
+<li>Modeling</li>
+
+<ul>
+<li>Tables <-> Classes</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/legacyDataSources.jpg" align=right>
+<h1>ORMs</h1>
+<p>
+
+</p>
+<ul>
+<li>Modeling</li>
+
+<ul>
+<li>Tables <-> Classes</li>
+<li>Fields <-> Attributes</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/legacyDataSources.jpg" align=right>
+<h1>ORMs</h1>
+<p>
+
+</p>
+<ul>
+<li>Modeling</li>
+
+<ul>
+<li>Tables <-> Classes</li>
+<li>Fields <-> Attributes</li>
+</ul>
+<li>Code Generation</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/legacyDataSources.jpg" align=right>
+<h1>ORMs</h1>
+<p>
+
+</p>
+<ul>
+<li>Modeling</li>
+
+<ul>
+<li>Tables <-> Classes</li>
+<li>Fields <-> Attributes</li>
+</ul>
+<li>Code Generation</li>
+
+<ul>
+<li>SQL</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/legacyDataSources.jpg" align=right>
+<h1>ORMs</h1>
+<p>
+
+</p>
+<ul>
+<li>Modeling</li>
+
+<ul>
+<li>Tables <-> Classes</li>
+<li>Fields <-> Attributes</li>
+</ul>
+<li>Code Generation</li>
+
+<ul>
+<li>SQL</li>
+<li>Accessors</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/legacyDataSources.jpg" align=right>
+<h1>ORMs</h1>
+<p>
+
+</p>
+<ul>
+<li>Modeling</li>
+
+<ul>
+<li>Tables <-> Classes</li>
+<li>Fields <-> Attributes</li>
+</ul>
+<li>Code Generation</li>
+
+<ul>
+<li>SQL</li>
+<li>Accessors</li>
+<li>Relationship fetchers</li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1><tt>Class::DBI</tt></h1>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1><tt>Class::DBI</tt></h1>
+<ul>
+<li>Meta code is in the base class</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1><tt>Class::DBI</tt></h1>
+<ul>
+<li>Meta code is in the base class</li>
+<li>No clear schema modelling</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1><tt>Class::DBI</tt></h1>
+<ul>
+<li>Meta code is in the base class</li>
+<li>No clear schema modelling</li>
+<li>No separation between regular & meta code</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1><tt>Class::DBI</tt></h1>
+<ul>
+<li>Meta code is in the base class</li>
+<li>No clear schema modelling</li>
+<li>No separation between regular & meta code</li>
+<li>Lots of hacks</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1><tt>Class::DBI</tt></h1>
+<ul>
+<li>Meta code is in the base class</li>
+<li>No clear schema modelling</li>
+<li>No separation between regular & meta code</li>
+<li>Lots of hacks</li>
+<li>Don't go there</li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1><tt>DBIx::Class</tt></h1>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1><tt>DBIx::Class</tt></h1>
+<ul>
+<li>Meta enlightened</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1><tt>DBIx::Class</tt></h1>
+<ul>
+<li>Meta enlightened</li>
+
+<ul>
+<li>Schema objects fully model the SQL side</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1><tt>DBIx::Class</tt></h1>
+<ul>
+<li>Meta enlightened</li>
+
+<ul>
+<li>Schema objects fully model the SQL side</li>
+<li>ResultSource etc partially model the OO side</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1><tt>DBIx::Class</tt></h1>
+<ul>
+<li>Meta enlightened</li>
+
+<ul>
+<li>Schema objects fully model the SQL side</li>
+<li>ResultSource etc partially model the OO side</li>
+<li>Components for everything</li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1><tt>DBIx::Class</tt></h1>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1><tt>DBIx::Class</tt></h1>
+<ul>
+<li>Meta code:</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1><tt>DBIx::Class</tt></h1>
+<ul>
+<li>Meta code:</li>
+
+<ul>
+<li>Proxy objects</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1><tt>DBIx::Class</tt></h1>
+<ul>
+<li>Meta code:</li>
+
+<ul>
+<li>Proxy objects</li>
+<li>Accessors</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1><tt>DBIx::Class</tt></h1>
+<ul>
+<li>Meta code:</li>
+
+<ul>
+<li>Proxy objects</li>
+<li>Accessors</li>
+<li>Code generation (SQL, Perl)</li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>ORM related meta programming</h1>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>ORM related meta programming</h1>
+<ul>
+<li>Complex</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>ORM related meta programming</h1>
+<ul>
+<li>Complex</li>
+<li>But manageable</li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/b-silencer-water-vapour.jpg" align=right>
+<h1>Vaporware</h1>
+<p>
+
+</p>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/b-silencer-water-vapour.jpg" align=right>
+<h1>MO</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/b-silencer-water-vapour.jpg" align=right>
+<h1>MO</h1>
+<p>
+
+</p>
+<ul>
+<li>My baby</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/b-silencer-water-vapour.jpg" align=right>
+<h1>MO</h1>
+<p>
+
+</p>
+<ul>
+<li>My baby</li>
+<li>Moose spinoff</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/b-silencer-water-vapour.jpg" align=right>
+<h1>MO</h1>
+<p>
+
+</p>
+<ul>
+<li>My baby</li>
+<li>Moose spinoff</li>
+
+<ul>
+<li>Stevan says it's Moose 2.0's</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/b-silencer-water-vapour.jpg" align=right>
+<h1>MO</h1>
+<p>
+
+</p>
+<ul>
+<li>My baby</li>
+<li>Moose spinoff</li>
+
+<ul>
+<li>Stevan says it's Moose 2.0's</li>
+</ul>
+<li>Perl 5 & Haskell (in pugs)</li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/lollypop.jpg" align=right>
+<h1>MO Sucks</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/lollypop.jpg" align=right>
+<h1>MO Sucks</h1>
+<p>
+
+</p>
+<ul>
+<li>Experimental code</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/lollypop.jpg" align=right>
+<h1>MO Sucks</h1>
+<p>
+
+</p>
+<ul>
+<li>Experimental code</li>
+<li>Boring parts messy or unwritten</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/lollypop.jpg" align=right>
+<h1>MO Sucks</h1>
+<p>
+
+</p>
+<ul>
+<li>Experimental code</li>
+<li>Boring parts messy or unwritten</li>
+<li>Lacking integration, sugar layer</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/lollypop.jpg" align=right>
+<h1>MO Sucks</h1>
+<p>
+
+</p>
+<ul>
+<li>Experimental code</li>
+<li>Boring parts messy or unwritten</li>
+<li>Lacking integration, sugar layer</li>
+
+<ul>
+<li>mst promised to help ;-)</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/lollypop.jpg" align=right>
+<h1>MO Sucks</h1>
+<p>
+
+</p>
+<ul>
+<li>Experimental code</li>
+<li>Boring parts messy or unwritten</li>
+<li>Lacking integration, sugar layer</li>
+
+<ul>
+<li>mst promised to help ;-)</li>
+</ul>
+<li>Some parts slow as $*!&%</li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/rocks.jpg" align=right>
+<h1>MO Rocks</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/rocks.jpg" align=right>
+<h1>MO Rocks</h1>
+<p>
+
+</p>
+<ul>
+<li>Purely functional</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/rocks.jpg" align=right>
+<h1>MO Rocks</h1>
+<p>
+
+</p>
+<ul>
+<li>Purely functional</li>
+<li>Very suited for meta transformations</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/rocks.jpg" align=right>
+<h1>MO Rocks</h1>
+<p>
+
+</p>
+<ul>
+<li>Purely functional</li>
+<li>Very suited for meta transformations</li>
+<li>Fine grained control over everything</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/rocks.jpg" align=right>
+<h1>MO Rocks</h1>
+<p>
+
+</p>
+<ul>
+<li>Purely functional</li>
+<li>Very suited for meta transformations</li>
+<li>Fine grained control over everything</li>
+<li>Can introduce entirely new conceptions of OO</li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
+<h1>MO Architechture</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
+<h1>MO Architechture</h1>
+<p>
+
+</p>
+<ul>
+<li>Modeling layer</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
+<h1>MO Architechture</h1>
+<p>
+
+</p>
+<ul>
+<li>Modeling layer</li>
+
+<ul>
+<li>Corresponds to compilation</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
+<h1>MO Architechture</h1>
+<p>
+
+</p>
+<ul>
+<li>Modeling layer</li>
+
+<ul>
+<li>Corresponds to compilation</li>
+</ul>
+<li>Responder layer</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
+<h1>MO Architechture</h1>
+<p>
+
+</p>
+<ul>
+<li>Modeling layer</li>
+
+<ul>
+<li>Corresponds to compilation</li>
+</ul>
+<li>Responder layer</li>
+
+<ul>
+<li>Corresponds to runtime</li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
+<h1>MO Architechture</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
+<h1>MO Architechture</h1>
+<p>
+
+</p>
+<ul>
+<li>Compiler/sugar layer creates the modeling layer</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
+<h1>MO Architechture</h1>
+<p>
+
+</p>
+<ul>
+<li>Compiler/sugar layer creates the modeling layer</li>
+
+<ul>
+<li>Class objects are constructed, with all the details</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
+<h1>MO Architechture</h1>
+<p>
+
+</p>
+<ul>
+<li>Compiler/sugar layer creates the modeling layer</li>
+
+<ul>
+<li>Class objects are constructed, with all the details</li>
+<li>No meta calculations happen yet</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
+<h1>MO Architechture</h1>
+<p>
+
+</p>
+<ul>
+<li>Compiler/sugar layer creates the modeling layer</li>
+
+<ul>
+<li>Class objects are constructed, with all the details</li>
+<li>No meta calculations happen yet</li>
+</ul>
+<li>Modeling layer is "compiled" into responder layer</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
+<h1>MO Architechture</h1>
+<p>
+
+</p>
+<ul>
+<li>Compiler/sugar layer creates the modeling layer</li>
+
+<ul>
+<li>Class objects are constructed, with all the details</li>
+<li>No meta calculations happen yet</li>
+</ul>
+<li>Modeling layer is "compiled" into responder layer</li>
+
+<ul>
+<li>Can be done on demand or upfront</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
+<h1>MO Architechture</h1>
+<p>
+
+</p>
+<ul>
+<li>Compiler/sugar layer creates the modeling layer</li>
+
+<ul>
+<li>Class objects are constructed, with all the details</li>
+<li>No meta calculations happen yet</li>
+</ul>
+<li>Modeling layer is "compiled" into responder layer</li>
+
+<ul>
+<li>Can be done on demand or upfront</li>
+</ul>
+<li>Obscurely named objects</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/engineering_large.jpg" align=right>
+<h1>MO Architechture</h1>
+<p>
+
+</p>
+<ul>
+<li>Compiler/sugar layer creates the modeling layer</li>
+
+<ul>
+<li>Class objects are constructed, with all the details</li>
+<li>No meta calculations happen yet</li>
+</ul>
+<li>Modeling layer is "compiled" into responder layer</li>
+
+<ul>
+<li>Can be done on demand or upfront</li>
+</ul>
+<li>Obscurely named objects</li>
+
+<ul>
+<li>Bear with me</li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/light-bulb-glowing-filament-light-blue-uncropped-lores-3-AHD.jpg" align=right>
+<h1>"Concepts"</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/light-bulb-glowing-filament-light-blue-uncropped-lores-3-AHD.jpg" align=right>
+<h1>"Concepts"</h1>
+<p>
+
+</p>
+<ul>
+<li>The purest form of OO is prototypes</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/light-bulb-glowing-filament-light-blue-uncropped-lores-3-AHD.jpg" align=right>
+<h1>"Concepts"</h1>
+<p>
+
+</p>
+<ul>
+<li>The purest form of OO is prototypes</li>
+
+<ul>
+<li>prototype OO can implement class OO</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/light-bulb-glowing-filament-light-blue-uncropped-lores-3-AHD.jpg" align=right>
+<h1>"Concepts"</h1>
+<p>
+
+</p>
+<ul>
+<li>The purest form of OO is prototypes</li>
+
+<ul>
+<li>prototype OO can implement class OO</li>
+</ul>
+<li>Concepts are new ways to express objects</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/light-bulb-glowing-filament-light-blue-uncropped-lores-3-AHD.jpg" align=right>
+<h1>"Concepts"</h1>
+<p>
+
+</p>
+<ul>
+<li>The purest form of OO is prototypes</li>
+
+<ul>
+<li>prototype OO can implement class OO</li>
+</ul>
+<li>Concepts are new ways to express objects</li>
+<li>A class is a concept</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/light-bulb-glowing-filament-light-blue-uncropped-lores-3-AHD.jpg" align=right>
+<h1>"Concepts"</h1>
+<p>
+
+</p>
+<ul>
+<li>The purest form of OO is prototypes</li>
+
+<ul>
+<li>prototype OO can implement class OO</li>
+</ul>
+<li>Concepts are new ways to express objects</li>
+<li>A class is a concept</li>
+<li>A role is a concept</li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/vtable.jpg" align=right>
+<h1>"Responder Interfaces"</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/vtable.jpg" align=right>
+<h1>"Responder Interfaces"</h1>
+<p>
+
+</p>
+<ul>
+<li><tt>$ri->dispatch( $responder, $invocation )</tt></li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/vtable.jpg" align=right>
+<h1>"Responder Interfaces"</h1>
+<p>
+
+</p>
+<ul>
+<li><tt>$ri->dispatch( $responder, $invocation )</tt></li>
+<li>Generated from concepts</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/vtable.jpg" align=right>
+<h1>"Responder Interfaces"</h1>
+<p>
+
+</p>
+<ul>
+<li><tt>$ri->dispatch( $responder, $invocation )</tt></li>
+<li>Generated from concepts</li>
+<li>Abstract VTable</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/vtable.jpg" align=right>
+<h1>"Responder Interfaces"</h1>
+<p>
+
+</p>
+<ul>
+<li><tt>$ri->dispatch( $responder, $invocation )</tt></li>
+<li>Generated from concepts</li>
+<li>Abstract VTable</li>
+
+<ul>
+<li>The flattened method hierarchy</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/vtable.jpg" align=right>
+<h1>"Responder Interfaces"</h1>
+<p>
+
+</p>
+<ul>
+<li><tt>$ri->dispatch( $responder, $invocation )</tt></li>
+<li>Generated from concepts</li>
+<li>Abstract VTable</li>
+
+<ul>
+<li>The flattened method hierarchy</li>
+<li>... or something completely different</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/vtable.jpg" align=right>
+<h1>"Responder Interfaces"</h1>
+<p>
+
+</p>
+<ul>
+<li><tt>$ri->dispatch( $responder, $invocation )</tt></li>
+<li>Generated from concepts</li>
+<li>Abstract VTable</li>
+
+<ul>
+<li>The flattened method hierarchy</li>
+<li>... or something completely different</li>
+<li>Performance</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/vtable.jpg" align=right>
+<h1>"Responder Interfaces"</h1>
+<p>
+
+</p>
+<ul>
+<li><tt>$ri->dispatch( $responder, $invocation )</tt></li>
+<li>Generated from concepts</li>
+<li>Abstract VTable</li>
+
+<ul>
+<li>The flattened method hierarchy</li>
+<li>... or something completely different</li>
+<li>Performance</li>
+<li>Flexibility</li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/fema_seal.gif" align=right>
+<h1>"Responders"</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/fema_seal.gif" align=right>
+<h1>"Responders"</h1>
+<p>
+
+</p>
+<ul>
+<li>Something that is the subject of invocations</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/fema_seal.gif" align=right>
+<h1>"Responders"</h1>
+<p>
+
+</p>
+<ul>
+<li>Something that is the subject of invocations</li>
+
+<ul>
+<li>An object instance</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/fema_seal.gif" align=right>
+<h1>"Responders"</h1>
+<p>
+
+</p>
+<ul>
+<li>Something that is the subject of invocations</li>
+
+<ul>
+<li>An object instance</li>
+<li>A class (class methods)</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/fema_seal.gif" align=right>
+<h1>"Responders"</h1>
+<p>
+
+</p>
+<ul>
+<li>Something that is the subject of invocations</li>
+
+<ul>
+<li>An object instance</li>
+<li>A class (class methods)</li>
+</ul>
+<li>A simple tuple <tt>( $data, $ri )</tt></li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/lg-banana.jpg" align=right>
+<h1>"Invocations"</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/lg-banana.jpg" align=right>
+<h1>"Invocations"</h1>
+<p>
+
+</p>
+<ul>
+<li>A method call, multimethod, message... whatever</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/lg-banana.jpg" align=right>
+<h1>"Invocations"</h1>
+<p>
+
+</p>
+<ul>
+<li>A method call, multimethod, message... whatever</li>
+
+<ul>
+<li>Arguments, too</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/lg-banana.jpg" align=right>
+<h1>"Invocations"</h1>
+<p>
+
+</p>
+<ul>
+<li>A method call, multimethod, message... whatever</li>
+
+<ul>
+<li>Arguments, too</li>
+</ul>
+<li>Whatever an RI will put up with</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/lg-banana.jpg" align=right>
+<h1>"Invocations"</h1>
+<p>
+
+</p>
+<ul>
+<li>A method call, multimethod, message... whatever</li>
+
+<ul>
+<li>Arguments, too</li>
+</ul>
+<li>Whatever an RI will put up with</li>
+
+<ul>
+<li>Extensible calling semantics</li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
+<h1>MO compilation flow</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
+<h1>MO compilation flow</h1>
+<p>
+
+</p>
+<ul>
+<li>Instantiate a <tt>Class</tt> object</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
+<h1>MO compilation flow</h1>
+<p>
+
+</p>
+<ul>
+<li>Instantiate a <tt>Class</tt> object</li>
+
+<ul>
+<li>Specify members (methods, attributes)</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
+<h1>MO compilation flow</h1>
+<p>
+
+</p>
+<ul>
+<li>Instantiate a <tt>Class</tt> object</li>
+
+<ul>
+<li>Specify members (methods, attributes)</li>
+<li>... and ancestor classes & roles</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
+<h1>MO compilation flow</h1>
+<p>
+
+</p>
+<ul>
+<li>Instantiate a <tt>Class</tt> object</li>
+
+<ul>
+<li>Specify members (methods, attributes)</li>
+<li>... and ancestor classes & roles</li>
+</ul>
+<li>Compile class</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
+<h1>MO compilation flow</h1>
+<p>
+
+</p>
+<ul>
+<li>Instantiate a <tt>Class</tt> object</li>
+
+<ul>
+<li>Specify members (methods, attributes)</li>
+<li>... and ancestor classes & roles</li>
+</ul>
+<li>Compile class</li>
+
+<ul>
+<li><tt>my $class_methods_ri = $class->class_interface()</tt></li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
+<h1>MO compilation flow</h1>
+<p>
+
+</p>
+<ul>
+<li>Instantiate a <tt>Class</tt> object</li>
+
+<ul>
+<li>Specify members (methods, attributes)</li>
+<li>... and ancestor classes & roles</li>
+</ul>
+<li>Compile class</li>
+
+<ul>
+<li><tt>my $class_methods_ri = $class->class_interface()</tt></li>
+<li>Instance method RI closed in the constructor, within <tt>$ri</tt></li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
+<h1>MO compilation flow</h1>
+<p>
+
+</p>
+<ul>
+<li>Instantiate a <tt>Class</tt> object</li>
+
+<ul>
+<li>Specify members (methods, attributes)</li>
+<li>... and ancestor classes & roles</li>
+</ul>
+<li>Compile class</li>
+
+<ul>
+<li><tt>my $class_methods_ri = $class->class_interface()</tt></li>
+<li>Instance method RI closed in the constructor, within <tt>$ri</tt></li>
+<li>Purely functional operation </li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
+<h1>RI composition</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
+<h1>RI composition</h1>
+<p>
+
+</p>
+<ul>
+<li>Compute instance methods and attributes from ancestry</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
+<h1>RI composition</h1>
+<p>
+
+</p>
+<ul>
+<li>Compute instance methods and attributes from ancestry</li>
+<li>Compute instance slots from attributes</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
+<h1>RI composition</h1>
+<p>
+
+</p>
+<ul>
+<li>Compute instance methods and attributes from ancestry</li>
+<li>Compute instance slots from attributes</li>
+<li>Generate accessors</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
+<h1>RI composition</h1>
+<p>
+
+</p>
+<ul>
+<li>Compute instance methods and attributes from ancestry</li>
+<li>Compute instance slots from attributes</li>
+<li>Generate accessors</li>
+</ul>
+<pre class="vim"> MO::Run::ResponderInterface::MethodTable->new(
+ methods => %methods
+ );
+</pre>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
+<h1>RI composition</h1>
+<p>
+
+</p>
+<ul>
+<li>Compute instance methods and attributes from ancestry</li>
+<li>Compute instance slots from attributes</li>
+<li>Generate accessors</li>
+</ul>
+<pre class="vim"> MO::Run::ResponderInterface::MethodTable->new(
+ methods => %methods
+ );
+</pre>
+<ul>
+<li>Generate constructor</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/snoqualmie-falls-flowing-3811-equalized.jpg" align=right>
+<h1>RI composition</h1>
+<p>
+
+</p>
+<ul>
+<li>Compute instance methods and attributes from ancestry</li>
+<li>Compute instance slots from attributes</li>
+<li>Generate accessors</li>
+</ul>
+<pre class="vim"> MO::Run::ResponderInterface::MethodTable->new(
+ methods => %methods
+ );
+</pre>
+<ul>
+<li>Generate constructor</li>
+</ul>
+<pre class="vim"> sub {
+ my $data = process_params(@_);
+ return box( $data, $instance_ri );
+ }
+</pre>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/Creation-hands-L.jpg" align=right>
+<h1>Instantiation</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/Creation-hands-L.jpg" align=right>
+<h1>Instantiation</h1>
+<p>
+
+</p>
+<ul>
+<li>Lookup RI using class name</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/Creation-hands-L.jpg" align=right>
+<h1>Instantiation</h1>
+<p>
+
+</p>
+<ul>
+<li>Lookup RI using class name</li>
+<li>Dispatch constructor class method</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/Creation-hands-L.jpg" align=right>
+<h1>Instantiation</h1>
+<p>
+
+</p>
+<ul>
+<li>Lookup RI using class name</li>
+<li>Dispatch constructor class method</li>
+<li>Compose data from params</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/Creation-hands-L.jpg" align=right>
+<h1>Instantiation</h1>
+<p>
+
+</p>
+<ul>
+<li>Lookup RI using class name</li>
+<li>Dispatch constructor class method</li>
+<li>Compose data from params</li>
+
+<ul>
+<li>Slightly complicated</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/Creation-hands-L.jpg" align=right>
+<h1>Instantiation</h1>
+<p>
+
+</p>
+<ul>
+<li>Lookup RI using class name</li>
+<li>Dispatch constructor class method</li>
+<li>Compose data from params</li>
+
+<ul>
+<li>Slightly complicated</li>
+</ul>
+<li>Link data with closed <tt>$instance_ri</tt></li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/Creation-hands-L.jpg" align=right>
+<h1>Instantiation</h1>
+<p>
+
+</p>
+<ul>
+<li>Lookup RI using class name</li>
+<li>Dispatch constructor class method</li>
+<li>Compose data from params</li>
+
+<ul>
+<li>Slightly complicated</li>
+</ul>
+<li>Link data with closed <tt>$instance_ri</tt></li>
+
+<ul>
+<li>Responder == ( Data, RI )</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/Creation-hands-L.jpg" align=right>
+<h1>Instantiation</h1>
+<p>
+
+</p>
+<ul>
+<li>Lookup RI using class name</li>
+<li>Dispatch constructor class method</li>
+<li>Compose data from params</li>
+
+<ul>
+<li>Slightly complicated</li>
+</ul>
+<li>Link data with closed <tt>$instance_ri</tt></li>
+
+<ul>
+<li>Responder == ( Data, RI )</li>
+<li>Like <tt>bless</tt></li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/telephone.jpg" align=right>
+<h1>Method calls</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/telephone.jpg" align=right>
+<h1>Method calls</h1>
+<p>
+
+</p>
+<ul>
+<li>How to talk with your new object?</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/telephone.jpg" align=right>
+<h1>Method calls</h1>
+<p>
+
+</p>
+<ul>
+<li>How to talk with your new object?</li>
+</ul>
+<pre class="vim"> my $ri = $responder->responder_interface;
+
+</pre>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/telephone.jpg" align=right>
+<h1>Method calls</h1>
+<p>
+
+</p>
+<ul>
+<li>How to talk with your new object?</li>
+</ul>
+<pre class="vim"> my $ri = $responder->responder_interface;
+
+
+ my $method = MO::Run::Invocation::Method->new(
+ name => "foo"
+ arguments => \@blah,
+ );
+
+</pre>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/telephone.jpg" align=right>
+<h1>Method calls</h1>
+<p>
+
+</p>
+<ul>
+<li>How to talk with your new object?</li>
+</ul>
+<pre class="vim"> my $ri = $responder->responder_interface;
+
+
+ my $method = MO::Run::Invocation::Method->new(
+ name => "foo"
+ arguments => \@blah,
+ );
+
+
+ $ri->dispatch( $responder, $method );
+</pre>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/telephone.jpg" align=right>
+<h1>Method calls</h1>
+<p>
+
+</p>
+<ul>
+<li>How to talk with your new object?</li>
+</ul>
+<pre class="vim"> my $ri = $responder->responder_interface;
+
+
+ my $method = MO::Run::Invocation::Method->new(
+ name => "foo"
+ arguments => \@blah,
+ );
+
+
+ $ri->dispatch( $responder, $method );
+</pre>
+<ul>
+<li>Arbitrary responder interfaces also allowed</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/telephone.jpg" align=right>
+<h1>Method calls</h1>
+<p>
+
+</p>
+<ul>
+<li>How to talk with your new object?</li>
+</ul>
+<pre class="vim"> my $ri = $responder->responder_interface;
+
+
+ my $method = MO::Run::Invocation::Method->new(
+ name => "foo"
+ arguments => \@blah,
+ );
+
+
+ $ri->dispatch( $responder, $method );
+</pre>
+<ul>
+<li>Arbitrary responder interfaces also allowed</li>
+
+<ul>
+<li>Doesn't have to be <tt>$responder->responder_interface</tt></li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/Surprise-buttsecks.jpg" align=right>
+<h1>OH NOES!!!</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/Surprise-buttsecks.jpg" align=right>
+<h1>OH NOES!!!</h1>
+<p>
+
+</p>
+<ul>
+<li>What's wrong with the previous slide?</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/Surprise-buttsecks.jpg" align=right>
+<h1>OH NOES!!!</h1>
+<p>
+
+</p>
+<ul>
+<li>What's wrong with the previous slide?</li>
+<li>RIs are objects too!</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/Surprise-buttsecks.jpg" align=right>
+<h1>OH NOES!!!</h1>
+<p>
+
+</p>
+<ul>
+<li>What's wrong with the previous slide?</li>
+<li>RIs are objects too!</li>
+<li>Need to bootstrap method calls</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/Surprise-buttsecks.jpg" align=right>
+<h1>OH NOES!!!</h1>
+<p>
+
+</p>
+<ul>
+<li>What's wrong with the previous slide?</li>
+<li>RIs are objects too!</li>
+<li>Need to bootstrap method calls</li>
+<li>Runtime must bootstrap low level OO</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/Surprise-buttsecks.jpg" align=right>
+<h1>OH NOES!!!</h1>
+<p>
+
+</p>
+<ul>
+<li>What's wrong with the previous slide?</li>
+<li>RIs are objects too!</li>
+<li>Need to bootstrap method calls</li>
+<li>Runtime must bootstrap low level OO</li>
+
+<ul>
+<li>More on this soon</li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/44790qV87_w.jpg" align=right>
+<h1>Meta level polymorphism</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/44790qV87_w.jpg" align=right>
+<h1>Meta level polymorphism</h1>
+<p>
+
+</p>
+<ul>
+<li>An important point</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/44790qV87_w.jpg" align=right>
+<h1>Meta level polymorphism</h1>
+<p>
+
+</p>
+<ul>
+<li>An important point</li>
+
+<ul>
+<li>In fact, <strong>the</strong> point of MO</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/44790qV87_w.jpg" align=right>
+<h1>Meta level polymorphism</h1>
+<p>
+
+</p>
+<ul>
+<li>An important point</li>
+
+<ul>
+<li>In fact, <strong>the</strong> point of MO</li>
+</ul>
+<li>Responder interfaces are polymorphic</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/44790qV87_w.jpg" align=right>
+<h1>Meta level polymorphism</h1>
+<p>
+
+</p>
+<ul>
+<li>An important point</li>
+
+<ul>
+<li>In fact, <strong>the</strong> point of MO</li>
+</ul>
+<li>Responder interfaces are polymorphic</li>
+
+<ul>
+<li>Method table, network proxy, whatever</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/44790qV87_w.jpg" align=right>
+<h1>Meta level polymorphism</h1>
+<p>
+
+</p>
+<ul>
+<li>An important point</li>
+
+<ul>
+<li>In fact, <strong>the</strong> point of MO</li>
+</ul>
+<li>Responder interfaces are polymorphic</li>
+
+<ul>
+<li>Method table, network proxy, whatever</li>
+</ul>
+<li>Easy to specialize</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/44790qV87_w.jpg" align=right>
+<h1>Meta level polymorphism</h1>
+<p>
+
+</p>
+<ul>
+<li>An important point</li>
+
+<ul>
+<li>In fact, <strong>the</strong> point of MO</li>
+</ul>
+<li>Responder interfaces are polymorphic</li>
+
+<ul>
+<li>Method table, network proxy, whatever</li>
+</ul>
+<li>Easy to specialize</li>
+
+<ul>
+<li>Optimizations</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/44790qV87_w.jpg" align=right>
+<h1>Meta level polymorphism</h1>
+<p>
+
+</p>
+<ul>
+<li>An important point</li>
+
+<ul>
+<li>In fact, <strong>the</strong> point of MO</li>
+</ul>
+<li>Responder interfaces are polymorphic</li>
+
+<ul>
+<li>Method table, network proxy, whatever</li>
+</ul>
+<li>Easy to specialize</li>
+
+<ul>
+<li>Optimizations</li>
+<li>Strange features</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/44790qV87_w.jpg" align=right>
+<h1>Meta level polymorphism</h1>
+<p>
+
+</p>
+<ul>
+<li>An important point</li>
+
+<ul>
+<li>In fact, <strong>the</strong> point of MO</li>
+</ul>
+<li>Responder interfaces are polymorphic</li>
+
+<ul>
+<li>Method table, network proxy, whatever</li>
+</ul>
+<li>Easy to specialize</li>
+
+<ul>
+<li>Optimizations</li>
+<li>Strange features</li>
+</ul>
+<li>Easy to mix several OO systems</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/44790qV87_w.jpg" align=right>
+<h1>Meta level polymorphism</h1>
+<p>
+
+</p>
+<ul>
+<li>An important point</li>
+
+<ul>
+<li>In fact, <strong>the</strong> point of MO</li>
+</ul>
+<li>Responder interfaces are polymorphic</li>
+
+<ul>
+<li>Method table, network proxy, whatever</li>
+</ul>
+<li>Easy to specialize</li>
+
+<ul>
+<li>Optimizations</li>
+<li>Strange features</li>
+</ul>
+<li>Easy to mix several OO systems</li>
+
+<ul>
+<li>Just compile to separate RIs</li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/card-camel-108.jpg" align=right>
+<h1>MO in Perl 5</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/card-camel-108.jpg" align=right>
+<h1>MO in Perl 5</h1>
+<p>
+
+</p>
+<ul>
+<li>Two runtimes</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/card-camel-108.jpg" align=right>
+<h1>MO in Perl 5</h1>
+<p>
+
+</p>
+<ul>
+<li>Two runtimes</li>
+<li>Very different</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/card-camel-108.jpg" align=right>
+<h1>MO in Perl 5</h1>
+<p>
+
+</p>
+<ul>
+<li>Two runtimes</li>
+<li>Very different</li>
+<li><tt>MO::Run::Aux</tt> wraps both</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/card-camel-108.jpg" align=right>
+<h1>MO in Perl 5</h1>
+<p>
+
+</p>
+<ul>
+<li>Two runtimes</li>
+<li>Very different</li>
+<li><tt>MO::Run::Aux</tt> wraps both</li>
+
+<ul>
+<li>Share tests by running with different <tt>%ENV</tt> var</li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/S2Secret.jpg" align=right>
+<h1>Hosted runtime</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/S2Secret.jpg" align=right>
+<h1>Hosted runtime</h1>
+<p>
+
+</p>
+<ul>
+<li>Nested object system</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/S2Secret.jpg" align=right>
+<h1>Hosted runtime</h1>
+<p>
+
+</p>
+<ul>
+<li>Nested object system</li>
+<li>Bootstraps with Perl 5</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/S2Secret.jpg" align=right>
+<h1>Hosted runtime</h1>
+<p>
+
+</p>
+<ul>
+<li>Nested object system</li>
+<li>Bootstraps with Perl 5</li>
+
+<ul>
+<li>Native Perl OO == Low level, like VM opcodes</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/S2Secret.jpg" align=right>
+<h1>Hosted runtime</h1>
+<p>
+
+</p>
+<ul>
+<li>Nested object system</li>
+<li>Bootstraps with Perl 5</li>
+
+<ul>
+<li>Native Perl OO == Low level, like VM opcodes</li>
+<li>Virtualized MO == High Level</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/S2Secret.jpg" align=right>
+<h1>Hosted runtime</h1>
+<p>
+
+</p>
+<ul>
+<li>Nested object system</li>
+<li>Bootstraps with Perl 5</li>
+
+<ul>
+<li>Native Perl OO == Low level, like VM opcodes</li>
+<li>Virtualized MO == High Level</li>
+<li>Completely separate levels</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/S2Secret.jpg" align=right>
+<h1>Hosted runtime</h1>
+<p>
+
+</p>
+<ul>
+<li>Nested object system</li>
+<li>Bootstraps with Perl 5</li>
+
+<ul>
+<li>Native Perl OO == Low level, like VM opcodes</li>
+<li>Virtualized MO == High Level</li>
+<li>Completely separate levels</li>
+</ul>
+<li><tt>$ri->dispatch( $responder, $method )</tt></li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/S2Secret.jpg" align=right>
+<h1>Hosted runtime</h1>
+<p>
+
+</p>
+<ul>
+<li>Nested object system</li>
+<li>Bootstraps with Perl 5</li>
+
+<ul>
+<li>Native Perl OO == Low level, like VM opcodes</li>
+<li>Virtualized MO == High Level</li>
+<li>Completely separate levels</li>
+</ul>
+<li><tt>$ri->dispatch( $responder, $method )</tt></li>
+
+<ul>
+<li>not <tt>$responder->$method()</tt></li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/S2Secret.jpg" align=right>
+<h1>Hosted runtime</h1>
+<p>
+
+</p>
+<ul>
+<li>Nested object system</li>
+<li>Bootstraps with Perl 5</li>
+
+<ul>
+<li>Native Perl OO == Low level, like VM opcodes</li>
+<li>Virtualized MO == High Level</li>
+<li>Completely separate levels</li>
+</ul>
+<li><tt>$ri->dispatch( $responder, $method )</tt></li>
+
+<ul>
+<li>not <tt>$responder->$method()</tt></li>
+</ul>
+<li>Full expressiveness</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/S2Secret.jpg" align=right>
+<h1>Hosted runtime</h1>
+<p>
+
+</p>
+<ul>
+<li>Nested object system</li>
+<li>Bootstraps with Perl 5</li>
+
+<ul>
+<li>Native Perl OO == Low level, like VM opcodes</li>
+<li>Virtualized MO == High Level</li>
+<li>Completely separate levels</li>
+</ul>
+<li><tt>$ri->dispatch( $responder, $method )</tt></li>
+
+<ul>
+<li>not <tt>$responder->$method()</tt></li>
+</ul>
+<li>Full expressiveness</li>
+<li>Slow, verbose</li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/indian-camp.jpg" align=right>
+<h1>Native runtime</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/indian-camp.jpg" align=right>
+<h1>Native runtime</h1>
+<p>
+
+</p>
+<ul>
+<li>Integrated object system</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/indian-camp.jpg" align=right>
+<h1>Native runtime</h1>
+<p>
+
+</p>
+<ul>
+<li>Integrated object system</li>
+<li>RIs are compiled into packages</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/indian-camp.jpg" align=right>
+<h1>Native runtime</h1>
+<p>
+
+</p>
+<ul>
+<li>Integrated object system</li>
+<li>RIs are compiled into packages</li>
+
+<ul>
+<li>Simple RIs are dissassembled and stuffed into the stash</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/indian-camp.jpg" align=right>
+<h1>Native runtime</h1>
+<p>
+
+</p>
+<ul>
+<li>Integrated object system</li>
+<li>RIs are compiled into packages</li>
+
+<ul>
+<li>Simple RIs are dissassembled and stuffed into the stash</li>
+<li>Complex RIs use <tt>AUTOLOAD</tt>, delegating to the RI meta object</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/indian-camp.jpg" align=right>
+<h1>Native runtime</h1>
+<p>
+
+</p>
+<ul>
+<li>Integrated object system</li>
+<li>RIs are compiled into packages</li>
+
+<ul>
+<li>Simple RIs are dissassembled and stuffed into the stash</li>
+<li>Complex RIs use <tt>AUTOLOAD</tt>, delegating to the RI meta object</li>
+</ul>
+<li>Only named method calls</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/indian-camp.jpg" align=right>
+<h1>Native runtime</h1>
+<p>
+
+</p>
+<ul>
+<li>Integrated object system</li>
+<li>RIs are compiled into packages</li>
+
+<ul>
+<li>Simple RIs are dissassembled and stuffed into the stash</li>
+<li>Complex RIs use <tt>AUTOLOAD</tt>, delegating to the RI meta object</li>
+</ul>
+<li>Only named method calls</li>
+
+<ul>
+<li>No arbitrary call concepts</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/indian-camp.jpg" align=right>
+<h1>Native runtime</h1>
+<p>
+
+</p>
+<ul>
+<li>Integrated object system</li>
+<li>RIs are compiled into packages</li>
+
+<ul>
+<li>Simple RIs are dissassembled and stuffed into the stash</li>
+<li>Complex RIs use <tt>AUTOLOAD</tt>, delegating to the RI meta object</li>
+</ul>
+<li>Only named method calls</li>
+
+<ul>
+<li>No arbitrary call concepts</li>
+<li><tt>-></tt> doesn't support anything else</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/indian-camp.jpg" align=right>
+<h1>Native runtime</h1>
+<p>
+
+</p>
+<ul>
+<li>Integrated object system</li>
+<li>RIs are compiled into packages</li>
+
+<ul>
+<li>Simple RIs are dissassembled and stuffed into the stash</li>
+<li>Complex RIs use <tt>AUTOLOAD</tt>, delegating to the RI meta object</li>
+</ul>
+<li>Only named method calls</li>
+
+<ul>
+<li>No arbitrary call concepts</li>
+<li><tt>-></tt> doesn't support anything else</li>
+</ul>
+<li>As fast as "regular" Perl OO</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/indian-camp.jpg" align=right>
+<h1>Native runtime</h1>
+<p>
+
+</p>
+<ul>
+<li>Integrated object system</li>
+<li>RIs are compiled into packages</li>
+
+<ul>
+<li>Simple RIs are dissassembled and stuffed into the stash</li>
+<li>Complex RIs use <tt>AUTOLOAD</tt>, delegating to the RI meta object</li>
+</ul>
+<li>Only named method calls</li>
+
+<ul>
+<li>No arbitrary call concepts</li>
+<li><tt>-></tt> doesn't support anything else</li>
+</ul>
+<li>As fast as "regular" Perl OO</li>
+
+<ul>
+<li>Even makes simple, standalone `.pmc`s</li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Perl 5 Runtimes</h1>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Perl 5 Runtimes</h1>
+<ul>
+<li>Native</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Perl 5 Runtimes</h1>
+<ul>
+<li>Native</li>
+
+<ul>
+<li>Usable with regular Perl OO <span class="html">☺</span></li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Perl 5 Runtimes</h1>
+<ul>
+<li>Native</li>
+
+<ul>
+<li>Usable with regular Perl OO <span class="html">☺</span></li>
+<li>Lacks arbitrary invocations <span class="html">☹</span> </li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Perl 5 Runtimes</h1>
+<ul>
+<li>Native</li>
+
+<ul>
+<li>Usable with regular Perl OO <span class="html">☺</span></li>
+<li>Lacks arbitrary invocations <span class="html">☹</span> </li>
+</ul>
+<li>Virtualized</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Perl 5 Runtimes</h1>
+<ul>
+<li>Native</li>
+
+<ul>
+<li>Usable with regular Perl OO <span class="html">☺</span></li>
+<li>Lacks arbitrary invocations <span class="html">☹</span> </li>
+</ul>
+<li>Virtualized</li>
+
+<ul>
+<li>Feature complete <span class="html">☺</span></li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Perl 5 Runtimes</h1>
+<ul>
+<li>Native</li>
+
+<ul>
+<li>Usable with regular Perl OO <span class="html">☺</span></li>
+<li>Lacks arbitrary invocations <span class="html">☹</span> </li>
+</ul>
+<li>Virtualized</li>
+
+<ul>
+<li>Feature complete <span class="html">☺</span></li>
+<li>Doesn't integrate <span class="html">☹</span></li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Perl 5 Runtimes</h1>
+<ul>
+<li>Native</li>
+
+<ul>
+<li>Usable with regular Perl OO <span class="html">☺</span></li>
+<li>Lacks arbitrary invocations <span class="html">☹</span> </li>
+</ul>
+<li>Virtualized</li>
+
+<ul>
+<li>Feature complete <span class="html">☺</span></li>
+<li>Doesn't integrate <span class="html">☹</span></li>
+<li>Slow <span class="html">☹</span></li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/botticelli.venus.jpg" align=right>
+<h1>Idealized MO toolchain</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/botticelli.venus.jpg" align=right>
+<h1>Idealized MO toolchain</h1>
+<p>
+
+</p>
+<ul>
+<li>Compiler handles modeling</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/botticelli.venus.jpg" align=right>
+<h1>Idealized MO toolchain</h1>
+<p>
+
+</p>
+<ul>
+<li>Compiler handles modeling</li>
+
+<ul>
+<li>Constructs meta objects at compile time</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/botticelli.venus.jpg" align=right>
+<h1>Idealized MO toolchain</h1>
+<p>
+
+</p>
+<ul>
+<li>Compiler handles modeling</li>
+
+<ul>
+<li>Constructs meta objects at compile time</li>
+</ul>
+<li>VM Opcodes support standard RI</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/botticelli.venus.jpg" align=right>
+<h1>Idealized MO toolchain</h1>
+<p>
+
+</p>
+<ul>
+<li>Compiler handles modeling</li>
+
+<ul>
+<li>Constructs meta objects at compile time</li>
+</ul>
+<li>VM Opcodes support standard RI</li>
+<li>Custom RIs are just objects</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/botticelli.venus.jpg" align=right>
+<h1>Idealized MO toolchain</h1>
+<p>
+
+</p>
+<ul>
+<li>Compiler handles modeling</li>
+
+<ul>
+<li>Constructs meta objects at compile time</li>
+</ul>
+<li>VM Opcodes support standard RI</li>
+<li>Custom RIs are just objects</li>
+
+<ul>
+<li>Bootstrapped using standard runtime objects</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/botticelli.venus.jpg" align=right>
+<h1>Idealized MO toolchain</h1>
+<p>
+
+</p>
+<ul>
+<li>Compiler handles modeling</li>
+
+<ul>
+<li>Constructs meta objects at compile time</li>
+</ul>
+<li>VM Opcodes support standard RI</li>
+<li>Custom RIs are just objects</li>
+
+<ul>
+<li>Bootstrapped using standard runtime objects</li>
+
+<ul>
+<li>Method table RI</li>
+</ul></ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/botticelli.venus.jpg" align=right>
+<h1>Idealized MO toolchain</h1>
+<p>
+
+</p>
+<ul>
+<li>Compiler handles modeling</li>
+
+<ul>
+<li>Constructs meta objects at compile time</li>
+</ul>
+<li>VM Opcodes support standard RI</li>
+<li>Custom RIs are just objects</li>
+
+<ul>
+<li>Bootstrapped using standard runtime objects</li>
+
+<ul>
+<li>Method table RI</li>
+<li>Named method invocation</li>
+</ul></ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/lolgeeks016.jpg" align=right>
+<h1>Perl 6</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/lolgeeks016.jpg" align=right>
+<h1>Perl 6</h1>
+<p>
+
+</p>
+<ul>
+<li>Perl 6 is the idealized MO toolchain</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/lolgeeks016.jpg" align=right>
+<h1>Perl 6</h1>
+<p>
+
+</p>
+<ul>
+<li>Perl 6 is the idealized MO toolchain</li>
+
+<ul>
+<li>Can introduce syntax</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/lolgeeks016.jpg" align=right>
+<h1>Perl 6</h1>
+<p>
+
+</p>
+<ul>
+<li>Perl 6 is the idealized MO toolchain</li>
+
+<ul>
+<li>Can introduce syntax</li>
+
+<ul>
+<li>Invocation types</li>
+</ul></ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/lolgeeks016.jpg" align=right>
+<h1>Perl 6</h1>
+<p>
+
+</p>
+<ul>
+<li>Perl 6 is the idealized MO toolchain</li>
+
+<ul>
+<li>Can introduce syntax</li>
+
+<ul>
+<li>Invocation types</li>
+<li>Concept declarations</li>
+</ul></ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/lolgeeks016.jpg" align=right>
+<h1>Perl 6</h1>
+<p>
+
+</p>
+<ul>
+<li>Perl 6 is the idealized MO toolchain</li>
+
+<ul>
+<li>Can introduce syntax</li>
+
+<ul>
+<li>Invocation types</li>
+<li>Concept declarations</li>
+</ul>
+<li>Implement bootstrap RIs in VM opcodes</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/lolgeeks016.jpg" align=right>
+<h1>Perl 6</h1>
+<p>
+
+</p>
+<ul>
+<li>Perl 6 is the idealized MO toolchain</li>
+
+<ul>
+<li>Can introduce syntax</li>
+
+<ul>
+<li>Invocation types</li>
+<li>Concept declarations</li>
+</ul>
+<li>Implement bootstrap RIs in VM opcodes</li>
+</ul>
+<li>Pugs might be using MO</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/lolgeeks016.jpg" align=right>
+<h1>Perl 6</h1>
+<p>
+
+</p>
+<ul>
+<li>Perl 6 is the idealized MO toolchain</li>
+
+<ul>
+<li>Can introduce syntax</li>
+
+<ul>
+<li>Invocation types</li>
+<li>Concept declarations</li>
+</ul>
+<li>Implement bootstrap RIs in VM opcodes</li>
+</ul>
+<li>Pugs might be using MO</li>
+
+<ul>
+<li>I'm not really sure</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/lolgeeks016.jpg" align=right>
+<h1>Perl 6</h1>
+<p>
+
+</p>
+<ul>
+<li>Perl 6 is the idealized MO toolchain</li>
+
+<ul>
+<li>Can introduce syntax</li>
+
+<ul>
+<li>Invocation types</li>
+<li>Concept declarations</li>
+</ul>
+<li>Implement bootstrap RIs in VM opcodes</li>
+</ul>
+<li>Pugs might be using MO</li>
+
+<ul>
+<li>I'm not really sure</li>
+<li>It was ported a while ago</li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Introducing new concepts</h1>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Introducing new concepts</h1>
+<ul>
+<li>Roles are the shit</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Introducing new concepts</h1>
+<ul>
+<li>Roles are the shit</li>
+<li>But what about next week's fad?</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Introducing new concepts</h1>
+<ul>
+<li>Roles are the shit</li>
+<li>But what about next week's fad?</li>
+<li>MO lets you introduce a new concept</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Introducing new concepts</h1>
+<ul>
+<li>Roles are the shit</li>
+<li>But what about next week's fad?</li>
+<li>MO lets you introduce a new concept</li>
+
+<ul>
+<li>Arbitrary at compile time</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Introducing new concepts</h1>
+<ul>
+<li>Roles are the shit</li>
+<li>But what about next week's fad?</li>
+<li>MO lets you introduce a new concept</li>
+
+<ul>
+<li>Arbitrary at compile time</li>
+<li>RI protocol at runtime</li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Example - Prototype Objects</h1>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Example - Prototype Objects</h1>
+<ul>
+<li>One shared RI</li>
+</ul>
+<pre class="vim"> sub dispatch {
+ my ( $object, $invocation ) = @_;
+
+ my $method = $object->{ $invocation->name };
+
+ $object->$method( $invocation->arguments );
+ }
+</pre>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/village_people.jpg" align=right>
+<h1>Example - Attribute Grammars</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/village_people.jpg" align=right>
+<h1>Example - Attribute Grammars</h1>
+<p>
+
+</p>
+<ul>
+<li>Crazy stuff from the 1970s</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/village_people.jpg" align=right>
+<h1>Example - Attribute Grammars</h1>
+<p>
+
+</p>
+<ul>
+<li>Crazy stuff from the 1970s</li>
+<li>Renewed interest in <span class="html">λ</span> land </li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/village_people.jpg" align=right>
+<h1>Example - Attribute Grammars</h1>
+<p>
+
+</p>
+<ul>
+<li>Crazy stuff from the 1970s</li>
+<li>Renewed interest in <span class="html">λ</span> land </li>
+<li>Was pretty easy in MO</li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/grammar.gif" align=right>
+<h1>Attribute Grammer Implementation</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/grammar.gif" align=right>
+<h1>Attribute Grammer Implementation</h1>
+<p>
+
+</p>
+<ul>
+<li>Introduce new concept objects</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/grammar.gif" align=right>
+<h1>Attribute Grammer Implementation</h1>
+<p>
+
+</p>
+<ul>
+<li>Introduce new concept objects</li>
+
+<ul>
+<li>Attribute Grammar</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/grammar.gif" align=right>
+<h1>Attribute Grammer Implementation</h1>
+<p>
+
+</p>
+<ul>
+<li>Introduce new concept objects</li>
+
+<ul>
+<li>Attribute Grammar</li>
+<li>Attribute Grammer Instance - one per AG per class</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/grammar.gif" align=right>
+<h1>Attribute Grammer Implementation</h1>
+<p>
+
+</p>
+<ul>
+<li>Introduce new concept objects</li>
+
+<ul>
+<li>Attribute Grammar</li>
+<li>Attribute Grammer Instance - one per AG per class</li>
+</ul>
+<li>Runtime specialized RI</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/grammar.gif" align=right>
+<h1>Attribute Grammer Implementation</h1>
+<p>
+
+</p>
+<ul>
+<li>Introduce new concept objects</li>
+
+<ul>
+<li>Attribute Grammar</li>
+<li>Attribute Grammer Instance - one per AG per class</li>
+</ul>
+<li>Runtime specialized RI</li>
+
+<ul>
+<li>Shadows any RI with additional context sensitive methods</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/grammar.gif" align=right>
+<h1>Attribute Grammer Implementation</h1>
+<p>
+
+</p>
+<ul>
+<li>Introduce new concept objects</li>
+
+<ul>
+<li>Attribute Grammar</li>
+<li>Attribute Grammer Instance - one per AG per class</li>
+</ul>
+<li>Runtime specialized RI</li>
+
+<ul>
+<li>Shadows any RI with additional context sensitive methods</li>
+</ul>
+<li>Additional runtime support code</li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/checklist.jpg" align=right>
+<h1>MO TODO</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/checklist.jpg" align=right>
+<h1>MO TODO</h1>
+<p>
+
+</p>
+<ul>
+<li>Write a sugar layer</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/checklist.jpg" align=right>
+<h1>MO TODO</h1>
+<p>
+
+</p>
+<ul>
+<li>Write a sugar layer</li>
+
+<ul>
+<li>Make it fun to use</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/checklist.jpg" align=right>
+<h1>MO TODO</h1>
+<p>
+
+</p>
+<ul>
+<li>Write a sugar layer</li>
+
+<ul>
+<li>Make it fun to use</li>
+</ul>
+<li>Tests</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/checklist.jpg" align=right>
+<h1>MO TODO</h1>
+<p>
+
+</p>
+<ul>
+<li>Write a sugar layer</li>
+
+<ul>
+<li>Make it fun to use</li>
+</ul>
+<li>Tests</li>
+<li>Refactor the Class objects</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/checklist.jpg" align=right>
+<h1>MO TODO</h1>
+<p>
+
+</p>
+<ul>
+<li>Write a sugar layer</li>
+
+<ul>
+<li>Make it fun to use</li>
+</ul>
+<li>Tests</li>
+<li>Refactor the Class objects</li>
+
+<ul>
+<li>Bloated example code</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/checklist.jpg" align=right>
+<h1>MO TODO</h1>
+<p>
+
+</p>
+<ul>
+<li>Write a sugar layer</li>
+
+<ul>
+<li>Make it fun to use</li>
+</ul>
+<li>Tests</li>
+<li>Refactor the Class objects</li>
+
+<ul>
+<li>Bloated example code</li>
+<li>There are some patterns to extract</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/checklist.jpg" align=right>
+<h1>MO TODO</h1>
+<p>
+
+</p>
+<ul>
+<li>Write a sugar layer</li>
+
+<ul>
+<li>Make it fun to use</li>
+</ul>
+<li>Tests</li>
+<li>Refactor the Class objects</li>
+
+<ul>
+<li>Bloated example code</li>
+<li>There are some patterns to extract</li>
+</ul>
+<li>Self hosting</li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Self Hosting</h1>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Self Hosting</h1>
+<ul>
+<li>Easier to maintain MO written in Moose</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Self Hosting</h1>
+<ul>
+<li>Easier to maintain MO written in Moose</li>
+<li>Need to have clean syntax</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+
+<h1>Self Hosting</h1>
+<ul>
+<li>Easier to maintain MO written in Moose</li>
+<li>Need to have clean syntax</li>
+<li>Stable <tt>.pmc</tt> compilation</li>
+</ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/istockphoto_2540021_painted_exclamation_mark.jpg" align=right>
+<h1>Conclusion</h1>
+<p>
+
+</p>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/istockphoto_2540021_painted_exclamation_mark.jpg" align=right>
+<h1>Conclusion</h1>
+<p>
+
+</p>
+<ul>
+<li>Meta code is awesome code</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/istockphoto_2540021_painted_exclamation_mark.jpg" align=right>
+<h1>Conclusion</h1>
+<p>
+
+</p>
+<ul>
+<li>Meta code is awesome code</li>
+
+<ul>
+<li>Especially my meta code ;-)</li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/istockphoto_2540021_painted_exclamation_mark.jpg" align=right>
+<h1>Conclusion</h1>
+<p>
+
+</p>
+<ul>
+<li>Meta code is awesome code</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/istockphoto_2540021_painted_exclamation_mark.jpg" align=right>
+<h1>Conclusion</h1>
+<p>
+
+</p>
+<ul>
+<li>Meta code is awesome code</li>
+
+<ul>
+<li>Lets you program in new ways</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/istockphoto_2540021_painted_exclamation_mark.jpg" align=right>
+<h1>Conclusion</h1>
+<p>
+
+</p>
+<ul>
+<li>Meta code is awesome code</li>
+
+<ul>
+<li>Lets you program in new ways</li>
+<li>Helps you take care of your other code</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/istockphoto_2540021_painted_exclamation_mark.jpg" align=right>
+<h1>Conclusion</h1>
+<p>
+
+</p>
+<ul>
+<li>Meta code is awesome code</li>
+
+<ul>
+<li>Lets you program in new ways</li>
+<li>Helps you take care of your other code</li>
+</ul>
+<li>Meta code is important code</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/istockphoto_2540021_painted_exclamation_mark.jpg" align=right>
+<h1>Conclusion</h1>
+<p>
+
+</p>
+<ul>
+<li>Meta code is awesome code</li>
+
+<ul>
+<li>Lets you program in new ways</li>
+<li>Helps you take care of your other code</li>
+</ul>
+<li>Meta code is important code</li>
+
+<ul>
+<li>It can affect <strong>anything</strong></li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/istockphoto_2540021_painted_exclamation_mark.jpg" align=right>
+<h1>Conclusion</h1>
+<p>
+
+</p>
+<ul>
+<li>Meta code is awesome code</li>
+
+<ul>
+<li>Lets you program in new ways</li>
+<li>Helps you take care of your other code</li>
+</ul>
+<li>Meta code is important code</li>
+
+<ul>
+<li>It can affect <strong>anything</strong></li>
+<li>Keep it minimalistic, and clearly defined</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/istockphoto_2540021_painted_exclamation_mark.jpg" align=right>
+<h1>Conclusion</h1>
+<p>
+
+</p>
+<ul>
+<li>Meta code is awesome code</li>
+
+<ul>
+<li>Lets you program in new ways</li>
+<li>Helps you take care of your other code</li>
+</ul>
+<li>Meta code is important code</li>
+
+<ul>
+<li>It can affect <strong>anything</strong></li>
+<li>Keep it minimalistic, and clearly defined</li>
+<li>No spaghetti monsters</li>
+</ul></ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/istockphoto_2540021_painted_exclamation_mark.jpg" align=right>
+<h1>Conclusion</h1>
+<p>
+
+</p>
+<ul>
+<li>Meta code is awesome code</li>
+
+<ul>
+<li>Lets you program in new ways</li>
+<li>Helps you take care of your other code</li>
+</ul>
+<li>Meta code is important code</li>
+
+<ul>
+<li>It can affect <strong>anything</strong></li>
+<li>Keep it minimalistic, and clearly defined</li>
+<li>No spaghetti monsters</li>
+</ul>
+<li>Meta code can be simple</li>
+</ul>
+<small>continued...</small>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/istockphoto_2540021_painted_exclamation_mark.jpg" align=right>
+<h1>Conclusion</h1>
+<p>
+
+</p>
+<ul>
+<li>Meta code is awesome code</li>
+
+<ul>
+<li>Lets you program in new ways</li>
+<li>Helps you take care of your other code</li>
+</ul>
+<li>Meta code is important code</li>
+
+<ul>
+<li>It can affect <strong>anything</strong></li>
+<li>Keep it minimalistic, and clearly defined</li>
+<li>No spaghetti monsters</li>
+</ul>
+<li>Meta code can be simple</li>
+
+<ul>
+<li>Only complicated if you aren't careful</li>
+</ul></ul>
+
+</div>
+<!-- END slide -->
+
+
+<!-- BEGIN slide -->
+<div class="slide">
+<img name="img" id="img" width="350" src="images/thanks.jpg" align=right>
+<h1>BIE FRENDS</h1>
+<p>
+
+</p>
+
+</div>
+<!-- END slide -->
+
+
+</body>
+</html>
+<!-- END s5 -->