November 13, 2009 by alex
Last weekend at JSConf.EU I gave another talk on CouchDB and CouchApps. This gave me an excellent excuse to hack on boom amazing instead of preparing my talk. Boom amazing is my personal presentation tool. Instead of slides my presentation is laid out on a single large surface and I can pan around, zoom in and out and rotate my viewpoint to show specific contents.
In the end I managed to add a bunch of new features and still get my talk done. The following post explains how boom amazing works and how you can create your own fancy presentations with it.
Boom amazing consists of a few relatively simple building blocks:
… pretty much sucks. I’ve tried a few tools already but still haven’t found anything that is simple and stable. I first tried Adobe Illustrator which can export to SVG, but first of all it’s slow, it sometimes crashes and I’m not willing to pay that much money just for drawing a few circles and write some text.
My current setup consists of Vector Designer for drawing and Scribus for converting to SVG. While I do like working in Vector Designer very much it doesn’t have an SVG exporter, it limits the maximum zoom and it has problems with the kerning when I set the font size below a certain level. I might be able to work around the zoom and kerning problems by simply using larger page sizes (this time I used 2x2 meters). I then export my drawing to the EPS format which works okay, except that the day before the conference Vector Designer suddenly created file sizes of 115MB instead of a few hundred KB like before. Which brings me to Scribus. It’s an open source vector drawing app with a truly ugly user interface, but it can import EPS and export SVG. At least sometimes. For me it worked in ~40% of the cases. Everything else was crashes, unknown import errors and missing data.
There’s a command line tool called pdf2svg (which you can install using MacPorts) which I also tried, but the resulting SVGs are much larger than what Scribus creates and the browser refused to display them.
If you’re not on OSX or can tolerate working with X11 apps there’s also Inkscape which has built-in SVG support.
In order to use boom amazing all you have to do is download it and push it into CouchDB.
git clone git://github.com/langalex/boom_amazing.git cd boom_amazing curl -X PUT http://localhost:5984/boom_amazing couchapp push boom_amazing
After that go to futon and upload your SVG file into any document in the boom_amazing database. Then you go to http://localhost:5984/boom_amazing/_design/boom_amazing/index.html. When you move your mouse to the top a toolbar appears where you can select your presentation from the dropdown. Once the file has loaded you can:
Whenever you like a position you can save that by clicking the save button in the toolbar. After you have recorded all positions you can then jump back and forth between them with the Previous and Next buttons or by pressing [b] and [space] - which is what I do when presenting.
If you are interested in extending the app here are the basics of how it works:
screen.js includes all the logic that handles mouse and keyboard events to move around. It also does all the computations for things like smooth transitions between positions and rotating around the center of the screen instead of just (0, 0).
The way this all works is that the jQuery SVG plugin loads the file and turns everything into DOM nodes. The application then takes all the nodes and puts them into a single group node. A group node can have an attribute transforms which expects a rotate, scale and translate parameter - the rest is up to the browser.
The feedback I have been getting for the talks where I have used boom amazing has been great so I am going to continue to use and extend it. Right now performance with larger SVGs is an issue but I don’t have any ideas wether I can do anything about it â€“ except for buying faster laptops. There are also still a bunch of basic features missing, like editing or removing saved positions, or reordering.
I would love to see other people to pick up boom amazing and use it for their presentations. It certainly is more work than putting together a bunch of slides but then again I think it is worth the effort, and the results easily make any fancy Keynote presentation look like 1990. :D