Thursday, June 26, 2014

Remixing with deck

When I saw Dave Cheney's splendid talk, "Five things that make Go fast", I wanted to see if deck, a Go package for presentations could replicate and perhaps improve an existing, well designed presentation.

Here is my remix, and its source made with pdfdeck, a deck client.

I tried to remain faithful to Dave's deck, but I did take some liberties: In some cases I replaced bullet lists with prose, (used to good effect with the CPU registers slide), and I redesigned the Thank-you slide a bit, and in one case replaced an image with a custom illustration (see slide 3).

Except for the CPU speed graph and the CPU cache photo, all of the illustrations were done with directly with deck markup. Also, I used highlighting to emphasize points in the code samples.

Dave's original deck uses Japanese glyphs, and because of a limitation of the PDF library that pdfdeck uses, I had to use images. (note that svgdeck, another deck client, does not have this limitation).

Here is the command line used to produce the deck:

pdfdeck -fontdir $df -serif Charter\ Regular -sans FiraSans-Regular -mono FiraMono-Regular -pagesize 1280,720 gofast.xml

This deck uses Fira Sans and Fira Mono for the main text and code, along with Charter for lists and blocks of prose. (see Matthew Butterick's Practical Typography on font choices). The directory pointed to by $df is where font files are stored; pdfdeck can use any TrueType font, which is nice --- you can try font combinations without changing the markup --- just change the font name in the command line, and re-run. Note that deck only knows about (by design), three font families (sans, serif, and mono). This imposes some discipline, and keeps the designs sane. Finally, the command preserves the 1.777 (16:9 "widescreen") aspect ratio of the original.

Remixing an existing presentation was a fun exercise, and I picked up a few more techniques along the way. Thanks to Dave for letting me use his original work.

If you want try deck and pdfdeck:

go get github.com/ajstarks/deck
go get github.com/ajstarks/deck/cmd/pdfdeck

For more information, check out the deck on deck, and its source.