Thoughts of a Serial Tinkerer

Hekyll: Impressive Presentations with Markdown

Posted on 07 Feb 2012.

I am a big fan of Jekyll, a static blog generator developed by one of those smart guys behind GitHub, Tom Preston-Werner. I love being able to write posts in Markdown and being able to version my entire site in a Git repository.

In the past year or so, I have been using Prezi.com to create a number of the presentations that I’ve given at various camps and conferences. Prezi is great, but it’s Flash-based and authoring within their tool is not the easiest process, and there’s no way to version a talk. A few of my recent talks have been with my friend and co-worker, Steven Merrill, and then he has gone on to improve the talks and give them at a few other events that I wasn’t able to attend. Once or twice, he forgot to ‘clone’ the presentation in Prezi before making changes, so we accidentally lost a copy of the presentation we originally gave and now only have the updated one. Not desirable.

New to the budding JavaScript-based presentation software is Impress.js, which is actually a really great analog for Prezi, done entirely in HTML, CSS, and JavaScript, which is awesome.

One day at work, Steven and I were discussing getting started on our presentation for our upcoming talk at Drupalcon Denver 2012, and we thought, “Hey, wouldn’t it be awesome if we could write our presentation in Markdown and have an Impress.js-powered presentation? We could use Jekyll!” So, I took my lunch break and whipped out a prototype which I dubbed “Hekyll” (pronounced heckle). And thus my new presentation engine side-project was born.

The idea for Hekyll is pretty simple: turn Markdown text files into a nice looking presentation. In the YAML front-matter for each slide (just like in each post in Jekyll), you can add attributes which can let you control all of the layout options provided by Impress.js, which includes position, scale and 3D rotations for your slides. Or, if you just need to get a presentation done quickly, there’s a “simple slideshow” configuration option for Hekyll that will just do simple cross-fades between your slides for you. But wait! There’s more! Hekyll comes with a decent set of default styles and also has a print page which will let you easily print each slide to a single page.

That’s it for now. I’ve been pondering a way to make easy themes for slides so that there can be a handful of presentation styles to get people started – it’s really just as simple as writing some CSS.