During the last fourteen days I worked on a new piece of software. Its name is raconteur and it is a slide compiler written in Objective-C. It lets you create presentations in Markdown and compiles them to HTML afterwards.


The last times I used Keynote it took some time until I got an acceptable result. First I wasn’t used to Keynote but second the user experience didn’t convince me. This doesn’t mean I am not capable of using Keynote, it is more that this is not the right tool for me.

Looking at the available tools out there, you have many options for creating slides. I had a look at some HTML 5 presentation tools, but they require the user to write down the slides directly into a HTML skeleton. This looked okay, but didn’t convince me. I want to write my slides in Markdown and don’t want to mess around with styles before I didn’t finish them. Another thing I don’t like about Keynote and Google Docs, I am not able to version the files properly. Yes, I am able to put them in a version control system of my choice, but I don’t see proper diffs because .pptx and .key are handled as binary files. Even when you unzip .pptx and look at all those xml files, a diff here would be useless.

Google docs

There is also Google Docs available and I was pointed to this several times. But, you know, it is Google. Every time I use their tools I feel a bit uncomfortable. But the main problem here is, it is not offline available. It always needs a working internet connection for working on slides. Also accessing slides only works with Internet connection.

My solution

As already said, my solution is named raconteur. The slides are written in Markdown and, surprise also saved as Markdown files. If you save a project the following files are generated:

  • example-project.json
  • example-0.md
  • example-1.md
  • example-2.md

example-project.json contains a list with all belonging files and also styles which apply for all slides (the master slide). Every Markdown file consists of a Frontmatter and the actual content. The Frontmatter holds the styles for the slide.