Any recent browser (Konqueror, Firefox, Safari) with JavaScript enabled will do. You load the start page of the presentation:
The primary webpage of the presention. It uses JavaScript to process keyboard events and XMLHttpRequest to send requests to the web server. The result of the query is placed into the webpage.
index.html could of course be named differently, it's just the start page of the presentation.
<div id="content">Presentation goes here</div>
well...
httpd2.pir is a tiny web server, using the ['HTTP'; 'Daemon'] class, which supports the GET method and CGI.
load_bytecode 'HTTP/Daemon.pbc'
The webserver is using the asynchronous event system of parrot to accept multiple client requests and serve results. It writes its log file during idle time.
Starting it with some options is as simple as this:
.local pmc d, opts d = new ['HTTP'; 'Daemon'], opts d.'run'()
A URI like page.pir?q... load_bytecodes cgi-pir/page.pir and runs a subroutine cgi-main. The result is of course sent back to the browser.
This is the actual presentation program, processing the .html source of the presentation. It delivers spliced parts according to the browser request.
Slides are taken from one .html page. The tag <h1> starts a new slide page, other top-level tags are placed beyond the previous one after <space> was pressed. Look at the source code of this file :)
<h1>Slides</h1> <p>Slides are taken from one <i>.html</i> page. ...<p>