+=head2 START WRITING A TALK
+
+[Before you start writing your real talk, I urge you to read
+L</WHAT MAKES A GOOD TALK> below].
+
+To start your talk, all you have to do is to make a new directory
+somewhere:
+
+ mkdir talk
+ cd talk
+
+A tech talk consists of HTML files ("slides") and shell scripts. The
+filenames must start with a number, followed optionally by a
+description, followed by the extension (C<.html>, C<.sh> or C<.term>).
+So to start our talk with two slides:
+
+ echo "This is the introduction" > 0010-introduction.html
+ echo "This is the second slide" > 0020-second.html
+
+To run it, run the command from within the talk directory:
+
+ techtalk-pse
+
+Any other file in the directory is ignored, so if you want to add
+Makefiles, version control files etc, just go ahead.
+
+=head2 TIPS FOR WRITING HTML
+
+You may have your own techniques and tools for writing HTML, so
+this section is just to share my ideas. I start every
+HTML file with a standard stylesheet and Javascript header:
+
+ <link rel="stylesheet" href="style.css" type="text/css"/>
+ <script src="code.js" type="text/javascript"></script>
+
+That just ensures that I can put common styling instructions for all
+my slides in a single file (C<style.css>), and I have one place where
+I can add all Javascript, if I need to use any (C<code.js>).
+
+=head3 BACKGROUNDS, FONTS AND LOGOS
+
+To add a common background and font size to all slides, put this in
+C<style.css>:
+
+ body {
+ font-size: 24pt;
+ background: url(background-image.jpg) no-repeat;
+ }
+
+To add a logo in one corner:
+
+ body {
+ background: url(logo.jpg) top right no-repeat;
+ }
+
+=head3 SCALING AND CENTERING
+
+Scaling slide text and images so that they appear at the same
+proportionate size for any screen resolution can be done using
+Javascript. (See
+L<https://developer.mozilla.org/En/DOM/window.innerHeight>).
+
+If you want to center text horizontally, use CSS, eg:
+
+ p.center {
+ text-align: center;
+ }
+
+To center text vertically, CSS3 is supposed to offer a solution some
+time, but while you're waiting for that try
+L<http://www.w3.org/Style/Examples/007/center#vertical>.
+
+=head3 PREVIEWING HTML
+
+I find it helpful to have Firefox open to display the HTML files and
+styles as I edit them. Just start firefox in the talk directory:
+
+ firefox file://$(pwd) &
+
+When you edit an HTML file, click the Firefox reload button to
+immediately see your changes.
+
+Tech Talk PSE uses WebKit embedding to display HTML. HTML is
+standardized enough nowadays that what you see in Firefox and other
+browsers should be the same as what Tech Talk PSE displays.
+WebKit-based browsers (Chrome, Safari) should be identical.
+
+=head2 CREATING FIGURES
+
+Use your favorite tool to draw the figure, convert it to an image (in
+any format that the Mozilla engine can display) and include it using
+an C<E<lt>imgE<gt>> tag, eg:
+
+ <img src="fig1.gif">
+
+Suitable tools include: Inkscape, XFig, GnuPlot, GraphViz, and many
+TeX tools such as PicTex and in particular TikZ.
+
+=head2 EMBEDDING VIDEOS, ANIMATIONS, ETC.
+
+Using HTML 5, embedding videos in the browser is easy. See:
+L<https://developer.mozilla.org/En/Using_audio_and_video_in_Firefox>
+
+For animations, you could try L<Haxe|http://haxe.org/> which has a
+Javascript back-end. There are many other possibilities.
+
+If you are B<sure> that the venue will have an internet connection,
+why not embed a YouTube video.
+
+=head2 DISPLAYING EXISTING WEB PAGES
+
+Obviously you could just have an HTML file that contains a redirect to
+the public web page:
+
+ <meta http-equiv="Refresh" content="0; url=http://www.example.com/">
+
+However if you want your talk to work offline, then it's better to
+download the web page in advance, eg. using Firefox's "Save Page As
+-E<gt> Web Page, complete" feature, into the talk directory, then
+either rename or make a symbolic link to the slide name:
+
+ ln -s "haXe - Welcome to haXe.html" 0010-haxe-homepage.html
+
+=head2 TIPS FOR WRITING SHELL SCRIPTS
+
+Make sure each C<*.sh> or C<*.term> file you write is executable,
+otherwise Tech Talk PSE won't be able to run it. (The program gives a
+warning if you forget this).
+
+The difference between C<*.sh> (shell script) and C<*.term> (a
+terminal script) is that a shell script runs any commands, usually
+graphical commands, whereas a terminal script runs in a full screen
+terminal.
+
+A good idea is to start each script by sourcing some common functions.
+All my scripts start with:
+
+ #!/bin/bash -
+ source functions
+
+where C<functions> is another file (ignored by Tech Talk PSE) which
+contains common functions for setting shell history and starting a
+terminal.
+
+In C<functions>, I have:
+
+ # -*- shell-script -*-
+
+ # Place any local environment variables required in 'local'.
+ if [ -f local ]; then source local; fi
+
+ export PS1="$ "
+
+ export HISTFILE=$talkdir/history
+
+ rm -f $HISTFILE
+ touch $HISTFILE
+
+ add_history ()
+ {
+ echo "$@" >> $HISTFILE
+ }
+
+ terminal ()
+ {
+ # Make $HISTFILE unwritable so the shell won't update it
+ # when it exits.
+ chmod -w $HISTFILE
+
+ # Execute a shell.
+ bash --norc "$@"
+ }
+
+By initializing the shell history, during your talk you can rapidly
+recall commands to start parts of the demonstration just by hitting
+the Up arrow. A complete terminal script from one of my talks would
+look like this:
+
+ #!/bin/bash -
+ source functions
+ add_history guestfish -i debian.img
+ terminal
+
+This is just a starting point for your own scripts.
+