You are here: Home robotic thoughts... Topics software

software

May 24, 2010

Presentation Software Options

I have been exploring alternate presentation software options for a little while now. My mission is to find a way to write my slides in a simple plain text markup. There are several reasons that I would want to do this.

My talks are generally on a technical subject, so I want to be able to add syntax highlighting inside my slides. There are ways to do this with Keynote, but it is a pain to manage. I just want to write the code directly in the slide and have the output transform it for me.

If I can write slides in a plain text markup, that means I can check my changes in to a version control repository. I write code most of the day, and writing my presentation in a similar manner just makes sense to me. I would be able to write a single section or group of slides, get to a stopping point and then check in my changes. This means I could later see a diff of what I had done and even quickly revert back to a previous version. Another benefit is that I can check in my changes, switch to another machine or another operating system, and still be able to work on my presentation with no change in workflow.

Aside from the management of the slides, I would be able to collaborate with another person or a group of people. I've actually done this once in practice and it was a rewarding experience. We were able to work on different sections of the presentation at the same time. Then once we wanted to see what the other person had written so far, it was just a matter of updating the code!

The other big advantage is that I don't have to rely on any GUI software to write my slides. I can use vim (my editor of choice) to write my slides on any platform I choose. So far I have been writing my slides in Markdown and have been enjoying the ease of use.

The biggest disadvantage is that you can't get too fancy with your slides. If you want to place text in 10 different places on one slide, then you are really better off using something like Keynote, Powerpoint or OpenOffice Impress.

Here is a roundup of the options that I have used so far.

Slideshow and S9

Slideshow was the first plain text based system that I tried. It works fairly well but has quite a few downsides to it. The biggest disappointment for me was the weak syntax highlighting support. This system requires Ruby 1.8 because of the use of a deprecated library. This threw me off at first, but after that it was pretty straight forward to install.

PROS

  • Use Markdown or Textile to write slides
  • Can be version controlled
  • Nice support for themes
  • Open source

CONS

  • Bases slides on headers, no way to have a slide without a header
  • Default style is quite horrific
  • Adding images to a presentation is a pain
  • No PDF export option natively
  • No way to easily preview changes (requires HTML generation)
  • No way to link to a specific slide
  • Syntax highlighter supports a limited set of languages
  • Syntax highlighting inclusion is dirty
  • Syntax highlighting default styles are no good
  • No fancy transitions
  • No presenter display
  • No active development at the moment

Showoff

I first saw Showoff in use while watching Scott Chacon's "Hg and Git; Can't we all just get along?" talk at Pycon. He wrote this presentation software with bigger goals in mind. Right now it is fairly basic compared to the lofty goals that he has set. Out of the box the look of this software is much easier on the eyes than Slideshow.

I thought that this might be exactly what I was looking for, but it fell short in its ability to output the presentation in PDF and HTML formats with my custom theme.

This software also suffered from the same Ruby 1.8 support issue as Slideshow. Neither of the authors warn their users of this fact.

PROS

  • Uses markdown
  • Bases slides on !SLIDE notation which makes it more flexible
  • Can be version controlled
  • Easy syntax highlighting
  • Command line demo mode
  • Server based for easy updates
  • PDF export
  • Nice default style
  • Default style is bound to a 1024 x 768 box, the typical projector resolution
  • Nice set of transitions using jQuery Cycle plugin
  • Open source
  • Actively being developed on

CONS

  • Applying a theme is not manageable across many presentations
  • No way to link to a specific slide
  • PDF export requires commercial software
  • PDF export breaks easily with custom style
  • PDF and HTML export have too many bugs at the moment to be useful
  • No presenter display

Keynote

Keynote is the software I've used the most so far. Keynote is very easy to use and has a nice UI that goes along with it.

The biggest gain from using Keynote is the fact that it has a presenter display. None of the HTML based solutions have come up with a solid presenter display. When I'm giving a talk/training to my co-workers, this isn't an issue. When I'm standing in front of a couple hundred people, it is nice to have a visual guide there with you. You can customize the presenter display to show the information you want and in the layout that you prefer. This is really a killer feature.

Keynote also gives you a way to export to PDF or HTML. This is important to me because I want to share my presentation on a site like Slideshare or in a non-Flash friendly way using HTML.

PROS

  • Easy to use
  • Nice UI
  • Fancy transitions
  • Nice built-in themes
  • Presenter display

CONS

  • Requires OS X
  • Syntax highlighting is a pain
  • HTML export is available, but just generates images
  • Not open source

Conclusion

For my next presentation I was going to try and use Showoff. It was looking quite promising until I tried to generate the PDF and accompanying HTML. The support for my custom theme and image handling in the PDF export failed for me. So for now, I'm going to stick with Keynote. My presentation will contain quite a few code snippets so I will be using Pygments to render them into rich text files, then pasting that into Keynote. Hopefully this won't drive me crazy!

Do you know of any other alternatives? Let me know in the comments.