11 July 2007 4:56 PM (guile | svg | presentations | xml | fold | org mode | emacs | jornadespl)
Good afternoon, world. I have a bit to write about; we'll see how much of it manages to escape my brain into this page.
fold, xml, presentations
To recap a bit, I've been trying to avoid powerpoint-style applications, especially OpenOffice. OpenOffice is good for some people but it hurts my brain.
After poking about for a while, I decided to make presentations with SVG graphics, with each layer being one slide. I made presentations in Inkscape, and then wrote a tool (in Guile) to split the SVG file into layers, and then make a PDF out of that.
However, the process was not satisfying: it was too hard to enter in the text, and I always had to think about alignment. I wanted to be able to make an SVG presentation programmatically. It turns out that the what has become the standard Scheme XML manipulation combinator, pre-post-order, is not well-suited to performing layout operations.
This is because pre-post-order effectively maps across XML child elements instead of single-threadedly passing a layout seed through the operation. So I started looking how to recast pre-post-order as an extended tree fold (foldts from Oleg's SSAX paper). I wrote up the results in a paper that I submitted to SFP 2007, Applications of Fold to XML Transformation. We'll see if it gets accepted, it's a bit of an odd endeavor.
Of course, the next time I gave a presentation, I would have to figure out how to use the algorithms that I had worked on, otherwise it would be wasted effort. The occasion was the Jornades del Programari Lliure last week in Girona. Following a recommendation by a kind commenter, I decided to write the presentation in Emacs' Org Mode, then transform its XML export into the presentation language that I defined, then use the algorithms that I presented to transform that into SVG. After the presentation, I cleaned up the scripts I had, and packaged them into a library that I just released, Guile-Present.
Guile-Present is OK. You can write your presentation in Emacs, with all of the fluidity that comes with plain text:
# -*- mode: org; fill-column: 34 -*- #+TITLE: Medios de (re)producción: GStreamer * Plan GStreamer: Multimedia para todos @fluendo.com: Qué es lo que estamos haciendo * GStreamer ** ¿Qué es GStreamer? * Una librería multimedia y un conjunto de plugins
Then, just run org-to-pdf-presentation on your org file, and you have a PDF ready to present (example; example in english). The PDF output is clean but not pretty. I hope to improve that in the future (read: the next time I give a presentation). I also need to fix some rendering bugs in the HTML documentation, but time is with me these days.