Pure Danger Tech


Making of “Designing with Dependency Injection” presentation

23 Feb 2005

In case anyone is interested, the presentation was built and run on my PowerBook. I used Keynote 2 (actually I bought the new iWork bundle to also get Pages) to write the presentation. I used the Watermark theme and the Cube page transition. The handful of UML pictures were done using OmniGraffle with their UML palette. This was the first time I have ever worked with either of these apps, so there was a bit of a learning curve.

Keynote worked quite well for me. I think the default themes and transitions are much nicer than PowerPoint, and generally the program is easy to use and very flexible. The yellow alignment guides that pop up to help with centering when aligning objects are wonderful. They are a great example of a feature that a user would never know to ask for but seems indispensable once you have it. I found it difficult to set/reset a standard slide transition to use for all slides. I ended up modifying the master slides for this but since I had already modified some slides individually, it seemed that those were not affected by the master‘s settings. I fixed that either by hand or by doing a select all, then changing the transition in the actual slides. In any case, seems like it would have been nice to set a transition and do “apply all” like you can do with the themes.

I did have some stumbles when I started working on the UML diagrams. I experimented with drawing the UML diagrams directly in Keynote using their drawing tools. The benefit of this is that all the objects of the diagram can be part of the build and you can make the diagram appear gradually in support of your presentation. I did some experimentation with this and thought it was neat but not too much better given the simplicity of what I was doing. And perhaps more importantly, as soon as I started using objects, I could not save my presentation without getting errors that my presentation was corrupted and could not be saved. Keynote then got into some weird save cycle which did ultimately wind up giving me a non-corrupted backup copy but not without a lot of confusion. Coupled with the fact that it was 2 AM and I was pretty punchy, this was more drama than I need in my life! So I searched for other alternatives.

When drawing UML, you really have two options: UML modeling tools and UML drawing tools. The former typically integrates with source and handles round-tripping, etc with a full range of UML diagrams. Some options are: Rational Rose, MagicDraw, ArgoUML, etc. The latter are typically generic drawing tools with palettes or stencils for UML (Visio, OmniGraffle, etc). Since my needs were simple and I had a free version of OmniGraffle on my PowerBook, that seemed like an obvious choice, especially when I learned it had a UML palette. There is an additional palette with some UML 2 additions available at the OmniGraffle Extras page (look for Christopher Corbell Stencils).

I found OmniGraffle to be simple and really nice to use. I would have preferred a couple of additional shapes not in the palette: the simplified interface representation (circle) and a variant of the class that had just one box for operations instead of two for attributes and operations. I tried building these myself and pretty quickly had something that looked decent, but I found it to be tricky to get the text to correctly draw into these shapes and the resize to work. I didn‘t really feel like becoming an expert in OmniGraffle, so I gave up and used what was there. To get the pictures to Keynote, I just selected part of the diagram and exported to a .png. I had issues with the text background of the stencil lines not being transparent, which looked crappy when imported to Keynote. I found that using the OmniGraffle text tool did not have this problem, so I did not use the text label on uses/extends lines and just supplied my own with the text tool.

As far as actually presenting with Keynote, I thought it was truly great. It uses a separate configurable presenter display which has the current and next slide, notes, clock, and timer. After trying a few things and giving a dry run of the talk at work, I found I liked having current and next slide stacked on the left and notes for the current slide on the right, pretty big. I found the clock slightly annoying in that you cannot turn off the seconds, so it tends to grab your attention unnecessarily when you glance at the presenter display.

Had a few more bumps trying to figure out how to share this presentation afterwards as well. First I went to upload the Keynote file and found it‘s actually a directory full of XML, pictures, etc rather than a single file. This is very cool (similar to all the OpenOffice stuff) but it would have been nice if Keynote had some mechanism to roll all that up into a zip or dmg for me. I then exported to PowerPoint and PDF without any problems. You lose the Cube transition and a bit of the positioning on the PowerPoint, but they both look great. However, I found the Keynote stuff was a few 100k and the PowerPoint was over 8 MB! Seems like the background (which was part of the Keynote theme and the same on all pages but the title) was saved as a separate image for every slide in the ppt, as far as I can tell from exporting the PPT to HTML. To fix this, I picked a new PowerPoint theme and applied it to the presentation, which brought the PPT back down to a reasonable size. Again, I think Apple could have figured this out better or at least given me an option to kill the background rather than incurring a huge amount of file bloat.

So, that‘s the technical background on the making of the talk. Maybe it will be useful to someone going through the same process somewhere out there….