On 11/10/06, <b class="gmail_sendername">Quinn Weaver</b> &lt;<a href="mailto:qw@sf.pm.org">qw@sf.pm.org</a>&gt; wrote:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
You know that thing in the Metreon?&nbsp;&nbsp;The video game that's projected<br>onto the floor, where you can run around and &quot;kick&quot; objects, and they<br>bounce around?&nbsp;&nbsp;<a href="http://westfield.com/metreon/">http://westfield.com/metreon/
</a><br><br>Turns out it's written in Perl.&nbsp;&nbsp;Our own Steve Fink will talk<br>about how he used XS and OpenGL to accomplish the task.&nbsp;&nbsp;This will be<br>a highly technical talk.</blockquote><div>&nbsp;<br>To clarify: the system is not really &quot;written in Perl&quot;. It is written in C++, but both extends and embeds Perl as a scripting language for advanced functionality (or, not uncommonly, working around bugs in the built-in functionality of the last release!) I did it in such a way that you *could* implement almost anything in Perl that you could in the C++ code, although in practice we limit our use of Perl to areas where scripting is just a much better fit (complex behavior, integration with external services, prototyping).
<br><br>Most of my talk will not be directly related to the Reactrix system, however. Instead, I'll be focusing on using Inline::CPP to extend Perl (though most of what I say will apply equally well to Inline::C, which is in general a safer bet.) I'll describe how to do it with a simple example in hopefully enough detail that you can use it for any wacky ideas you might have, then move on to talking about all the bumps I needed to smooth over when using this stuff in production (example: we have a couple of hundred systems installed across the country in places like malls and movie theaters, and for security and predictable maintainability, we'd really prefer for it to not be compiling C++ code at runtime! Minimizing the number of modules and devel libraries that need to be installed is also good.)
<br><br>If I had no sense of taste whatsoever, I might title the talk &quot;Perl Extending and Embedding With a Production-Ready Inline Development Environment&quot;. But I am not quite sick enough --&nbsp; &quot;PEE With PRIDE&quot; goes a little too far.
<br><br>At the end, I'll talk some about how this stuff is used specifically in the Reactrix system, and you can feel free to ask whatever questions you have. I felt like Inline::CPP and the Reactrix Effects Engine were really (at least) a complete talk each, so I didn't want to squish them together. The Reactrix stuff is sexier, but I thought Inline::CPP might be applicable to more people. If you guys aren't sick of the sound of my voice, I might do the Reactrix Effects Engine talk sometime later (basically, using Perl to implement real-time camera-driven reactive user experiences, or something like that).
<br><br>Or at least, that's the plan. I haven't done either talk before, nor completely finished planning this one out.<br><br>If anyone has any opinions of what they'd like to see covered (all of Inline, Inline::CPP, XS, etc. are open, though I'm not exactly the expert on any of them), please let me know. Or if you don't care about Inline or XS, and just want to hear about pretty graphical things, let me know that too, before I bore the wits out of you.
<br><br>Links:<br><br>Inline::CPP: <a href="http://search.cpan.org/~neilw/Inline-CPP-0.25/lib/Inline/CPP.pod">http://search.cpan.org/~neilw/Inline-CPP-0.25/lib/Inline/CPP.pod</a><br><br>Reactrix's (not so interesting) web site: 
<a href="http://www.reactrix.com">http://www.reactrix.com</a><br><br>In my opinion, the best YouTube video showing the system: <a href="http://www.youtube.com/watch?v=w6d48ksCpc8">http://www.youtube.com/watch?v=w6d48ksCpc8
</a><br>(you can search for 'reactrix' for a few more)<br><br></div></div>