Code and Hacks

Stuff I've stumbled on or figured out... mostly Perl, Linux, Mac and Cygwin.

My Photo
Name:
Location: CA, United States

Perl hacker, investor and entrepreneur.

Friday, April 2, 2010

Open Source Presentation Software

I am thinking about giving a presentation at one of my local Perl Monger meetings. So as usual, I have spent a bunch of time toying with new tools rather than getting work done! Which tools: open source presentation creation software. I wanted something that would take a simple text file and easily create an attractive and easy to use presentation.

Here is a quick summary of the options that I tried or looked into:

  • Vroom::Vroom - This is cool. If you like vim and aren’t hung up on the output format it might be for you. I had some trouble getting the key-bindings to work, but I would guess it was a conflict with another vim plugin.

    Vroom can present right in vim or output to html. Both are pretty plain looking, but I didn’t look into customizing the html output. I love that you can press RR and run the code on the slide. The input is a custom format but it is pretty similar to markdown.

  • Pod::S5 - I really wanted to like this one–it is written in Perl, uses a standard method input format, and it creates an HTML presentation. But I was hung up on a couple of things. While pod is great, it isn’t nearly as easy to use as markdown, and the text slides just aren’t that easy to read. Things like lists just take up too much room:

    =over 4
    
    =item *
    
    A Bullet
    
    =item *
    
    Another Bullet
    
    =back

    That’s just too much vertical whitespace.

    Second, the output is S5 which has been superseded by S6. The templates in S5 didn’t really appeal to me and had some issues in my browser.

  • Spork / Spork::S5 - I had some trouble installing this, but eventually realized I just needed to install Kwiki::Cache first. The default themes are not particularly attractive, but again I didn’t look into customizing the output. I do like that it automatically scales text. The ability to highlight sections of the text/code with underlining or colors sounds very cool. For example, this markup:

    .pretty.
     sub greet {
      print "Hello there\n";
    #             _______________
    #              RRRRR
     }    
    .pretty.

    Should underline and make “Hello there” red. I didn’t test this, but according to the documentation it is “coming soon”.

  • Slide Show (S9) - I ended up settling on Slide Show. While I was biased toward a Perl solution, and this is written in Ruby, it definitely seemed the most mature and robust solution. (Maybe I’ll end up learning a bit of Ruby as a side benefit.)

    Slide show can take either textile or markdown as input, it outputs S5 or S6, and has some nice (and simple) templates bundled. It will use any one of a number of markdown parsers so I am using Maruku which has some nice additions to the core markdown syntax (ie, add a css class declaration to an element).

    Installation was easy (once I googled for one error message):

    gem install slideshow
    gem install ultraviolet
    # got error: oniguruma.h: No such file or directory
    port install oniguruma
    gem install ultraviolet

    Slide show also handles syntax highlighting for your code and can import external files into the presentation.

    # Import a file
    <%= include 'help.txt' %>
    # Highlight and import code
    <% code 'test.pl', :lang => 'perl' %> 
    # Highlight inline code
    <% code :lang => 'perl' do %> 
     my $code = 'is simple';
    <% end %>

    All in all, it seems like it fits the bill.

Summary

I probably missed some very nice alternatives. I know there is spod5 on CPAN, but that seems very similar to Pod::S5. I’m sure there are more. Let me know if I should be trying out your favorite.

One other aspect that I’ve been tinkering with: printing the presentation. I don’t need it for the PM presentation I am working on, but if I were to try to switch from PowerPoint to Slide Share for my day job, I would definitely need a way to create .pdf files.

This seems like an issue that others are running into, but there is no great solution so far. It looks like the trick may be to customize the print.css file. The following should change the page layout and add page breaks:

@page {size: landscape;}  /* only works in Opera? */
.slide {page-break-after: always;}

But we are still missing the nice background and layout. I’ll need to spend some more time on this.

Last note: I stumbled into what may be a nice tool to convert a web page to .pdf from the command line: wkhtmltopdf. It barfed on my S6 presentation, but it printed a few other websites nicely.

Labels:

2 Comments:

Anonymous Anonymous said...

If the main thing you dislike about Pod::S5 is the list syntax, look at preprocessing your Pod with Pod::Elemental::Transformer::List. With it, you can write very compact lists that can then be transformed into standard Pod lists.

You can drop me an email if you have any questions about how to use it. I use it all the time.

April 6, 2010 at 2:42 PM  
Blogger Andrew Grangaard said...

Speaking of POD, I convert my pod docs to pdf via a transform through groff because I like the look of man pages. Since code sections are handled verbatim, long lines are clipped.

pod2man $pfile | groff -Tps -man > "$ofile.ps"

App::pod2pdf creates pdfs directly, with lots of options (including image embed).

On the flip side, I use enscript and ps2pdf to print/pdf my code in 2-up garish mode, because that's just how I expect to read printed code. pretty printing perl with enscript

April 27, 2010 at 10:55 AM  

Post a Comment

Subscribe to Post Comments [Atom]

<< Home