About me

Blog Posts Blog Tags Blog Feed

2023 2022 2021 2020 2019 2018 2017

Log in

Copyright © 2022
Jeffrey Elkner

Tools for Presentations

Today begins my last week of the 2019-20 school year before Summer break begins. Teachers at Arlington Public Schools have been tasked with using the last week for professional development related to online learning. Given the present crisis, it is not clear what opening of school at the end of August will look like. Will we be meeting in person? Online? Some combination of the two? I will need to explore a range of technologies, but perhaps the best place to start would be with exploring presentation software.

What I'm looking for in presentation software

There are many options from which to choose for presentation software, so I'll begin my exploration with a list of criteria by which to judge them. I am looking for a tool which:

  1. is free software. This is always the first criterion for me.
  2. supports web based presentations. I would like to share whatever I decide to use with my students, so having something that is standards based, cross platform, and portable would all be a plus. Using web standards achieves all three.
  3. allows me to create slides with a text editor. I'm an old geek who knows that software is best which gets out of your gets out of your way and allows you to focus on getting the job done. GUI tools can sometimes help by abstracting away arcane configuration options, but as often as not they then get in the way of a light weight work flow. I want to use vim to create my presentation, if possible.
  4. easily supports presentation of code examples with color syntax highlighting.
Reveal.js Logo


One candidate finalist is certainly reveal.js. It is free software, web standards based, and supports a mix of HTML and Markdown for creating slides, so I could certainly create slides in vim. It also supports color syntax highlighting. This seems to meet all the requirements, and may be the tool I end up using either alone or in combination with one more I want to explore.


Another candidate finalist is`Hovercraft! <>`_, a Python tool for creating impress.js presentations from reStructuredText. Impress.js is uses CSS3 transformations and animations to create a presentation tool similar to Prezi. Prezi is SaaS software that is not open source. Impress.js is free software, and having a presentation tool that supports transitions and animations might be cool, though I have to admit to being distracted by these things in presentations rather than engaged when I see them myself.

Taking the candidates for a test drive

Having narrowed down the decision as to which presentation software to use, I will now take both of them for a "test drive". I have until Wednesday to prepare a presentation on the first few units of Dr. Chuck's Django for Everybody course. I'll make the presentation using both reveal.js and Hovercraft!, and compare the experience and the results afterwards.

The first step is to install each of them.


Running Ubuntu 20.04 and following the installation instructions on the reveal.js website, I did the following:

$ sudo apt install npm
$ cd reveal.js && npm install
$ npm start

That starts a web server on localhost:8000. Pointing a web browser to that address shows:

Reveal.js Sample Slide

After a bit more investigation, I found there is really no need to involve node.js or npm. Instead, I just down the zip file from the github site, unzipped it and put the copied the following sub-directories into a sub-directory of my presentation I named reveal:

  • dist
  • js
  • plugin

Then I needed to adjust the paths in the presentation accordingly, and I ended up with a self-contained directory with my presentation html and everything it needed to use reveal.js. I even copied the night.css theme next to my presentation file and tweaked it a bit to get this:

Reveal.js first slide


This is Python, so I setup a virtual environment to run it:

$ mkdir hovercraft
$ cd hovercraft
$ python3 -m venv venv
$ source venv/bin/activate
(venv) $ pip install wheel
(venv) $ pip install hovercraft

Now as long as I have the virtual environment activated, the command $ hovercraft presentation.rst builddir will create an html presentation in builddir from the presentation.rst reStructuredText source file. I tried a variation on this using pipenv:

$ mkdir hovercraft
$ cd hovercraft
$ pipenv install hovercraft
$ pipenv shell
(hovercraft-nnnnnn) $ git clone
(hovercraft-nnnnnn) $ cd DJ4Enotes
(hovercraft-nnnnnn) $ hovercraft session01.rst dj4e1

which creates a dj4e1 directory with an index.html file containing the presention, together with the css and js sub-directories with the impress.js software that runs the presentation.

Hovercraft! first slide


Both these tools look promising. A bit of effort would be required to generate custom css files to make the resulting presentations look the way I want. After doing that, however, I could create new presentations in either html (reveal.js) or reStructuredText (Hovercraft!).