Your company here — click to reach over 10,000 unique daily visitors

techtalk-pse - Man Page

superior technical demonstration software


 cd /path/to/talk/; techtalk-pse

 techtalk-pse /path/to/talk/


Tech Talk "Platinum Supreme Edition" (PSE) is Linux Presentation Software designed by technical people to give technical software demonstrations to other technical people.  It is designed to be simple to use (for people who know how to use an editor and the command line) and powerful, so that you can create informative, technically accurate and entertaining talks and demonstrations.

Tech Talk PSE is good at opening editors at the right place, opening shell prompts with preloaded history, compiling and running things during the demonstration, displaying text, photos, figures and video.

Tech Talk PSE is bad at slide effects, chart junk and bullet points.

This manual page covers all the documentation you will need to use Tech Talk PSE.  The next section covers running the tool from the command line.  After that there is a "Tutorial" section to get you started.  Then there is a detailed "Reference" section.  Finally there is a discussion on "What Makes a Good Talk".

Running the Tool from the Command Line

Tech Talk PSE talks are just directories containing *.html, *.sh (shell script) and *.term (terminal) files:


The filenames that Tech Talk PSE considers to be slides have to match the regular expression:


(any other file or subdirectory is ignored).  Shell scripts and terminal files must be executable.

Displaying an Existing Talk

To display or run a talk, change into the directory containing all those files and run the techtalk-pse command:

 cd /path/to/talk/; techtalk-pse

You can also run techtalk-pse without changing directory, instead specifying the path to the talk:

 techtalk-pse /path/to/talk/



Display brief help and exit.


Start at the last slide.

You cannot use this with the -n / --start option.

-n SLIDE | --start SLIDE

Start at the named slide.  SLIDE is the shortest unique prefix of the slide name, so to start at a slide named 00010-introduction.html, you could use -n 00010 or -n 00010-intro, or give the full filename -n 00010-introduction.html.

The default is to start at the first slide in the talk.


Display verbose messages, useful for debugging or tracing what the program is doing.


Display version number and exit.


Start Writing a Talk

[Before you start writing your real talk, I urge you to read "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 (.html, .sh or .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:


Any other file in the directory is ignored, so if you want to add Makefiles, version control files etc, just go ahead.

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 (style.css), and I have one place where I can add all Javascript, if I need to use any (code.js).


To add a common background and font size to all slides, put this in 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;


Scaling slide text and images so that they appear at the same proportionate size for any screen resolution can be done using Javascript.  (See <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 <http://www.w3.org/Style/Examples/007/center#vertical>.


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.

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 <img> tag, eg:

 <img src="fig1.gif">

Suitable tools include: Inkscape, XFig, GnuPlot, GraphViz, and many TeX tools such as PicTex and in particular TikZ.

Embedding Videos, Animations, etc.

Using HTML 5, embedding videos in the browser is easy.  See: <https://developer.mozilla.org/En/Using_audio_and_video_in_Firefox>

For animations, you could try Haxe <http://haxe.org/> which has a Javascript back-end.  There are many other possibilities.

If you are sure that the venue will have an internet connection, why not embed a YouTube video.

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 -> 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

Tips for Writing Shell Scripts

Make sure each *.sh or *.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 *.sh (shell script) and *.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 functions is another file (ignored by Tech Talk PSE) which contains common functions for setting shell history and starting a terminal.

In 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

This is just a starting point for your own scripts.


Order of Files

Tech Talk PSE displays the slides in the directory in lexicographic order (the same order as LANG=C ls -1).  Only files matching the following regexp are considered:


For future compatibility, you should ensure that every slide has a unique numeric part (ie. don't have 0010-aaa.html and 0010-bbb.html).  This is because in future we want to have the ability to display multiple files side by side.

Also for future compatibility, don't use file names that have an uppercase letter immediately after the numeric part.  This is because in future we want to allow placement hints using filenames like 0010L-on-the-left.html and 0010R-on-the-right.html.

Base URL and Current Directory

The base URL is set to the be the directory containing the talk files. Thus you should use relative paths, eg:

 <img src="fig1.gif">

You can also place assets into subdirectories, because subdirectories are ignored by Tech Talk PSE, eg:

 <img src="images/fig1.gif">

When running shell scripts, the current directory is also set to be the directory containing the talk files, so the same rules about using relative paths apply there too.

The environment variable $talkdir is exported to scripts and it contains the absolute path of the directory containing the talk files. When a script is run, the current directory is the same as $talkdir, but if your script changes directory (eg. into a subdirectory containing supporting files) then it can be useful to use $talkdir to refer back to the original directory.

What Makes a Good Talk

I like what Edward Tufte writes, for example his evisceration of PowerPoint use at NASA here: <http://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=0001yB>

However it is sometimes hard to translate his ideas into clear presentations, and not all of that is the fault of the tools.  Here are my thoughts and rules on how to deliver a good talk.

First, most important rule: Before you start drawing any slides at all, write your talk as a short essay.

This is the number one mistake that presenters make, and it is partly a tool fault, because PowerPoint, OpenOffice, even Tech Talk PSE, all open up on an initial blank slide, inviting you to write a title and some bullet points.  If you start that way, you will end up using the program as a kind of clumsy outlining tool, and then reading that outline to your audience.  That's boring and a waste of time for you and your audience.  (It would be quicker for them just to download the talk and read it at home).

Secondly: How long do you want to spend preparing the talk?  A good talk, with a sound essay behind it, well thought out diagrams and figures, and interesting demonstrations, takes many hours to prepare. How many hours?  I would suggest thinking about how many hours of effort your audience are putting in.  Even just 20 people sitting there for half an hour is 10 man-hours of attention, and that is a very small talk, and doesn't include all the extra time and hassle that it took to get them all in one place.

I don't think you can get away with spending less than two full days preparing a talk, if you want to master the topic and draw up accurate slides.  Steve Jobs was reputed to spend weeks preparing his annual sales talk to the Apple faithful.

Thirdly: Now that you're going to write your talk as an essay, what should go in the slides?  I would say that you should consider delivering the essay, not the slides, to people who don't make the talk.  An essay can be turned into an article or blog posting, whereas even "read-out-the-bullet-point" slides have a low information density, large size, and end-user compatibility problems (*.pptx anyone?).

What, then, goes on the slides?  Anything you cannot just say: diagrams, graphs, videos, animations, and of course (only with Tech Talk PSE!) demonstrations.

Lastly: Once you've got your talk as an essay and slides, practice, practice and practice again.  Deliver the talk to yourself in the mirror, to your colleagues.  Practice going backwards and forwards through the slides, using your actual laptop and the software so you know what to click and what keys to press.  Partly memorize what you are going to say (but use short notes written on paper if you need to).

See Also

The Cognitive Style of PowerPoint, Tufte, Edward R.


Richard W.M. Jones <http://people.redhat.com/~rjones/>

Daniel Berrangé <http://berrange.com/>


2024-01-27 techtalk-pse-1.2.0 Presentation Software