Presentation Creation Process

Today I was asked how I go about creating a technical presentation.  This is my process.

First, take notes (either in an Engineering Journal or with OneNote) when learning a technology or skill.  Pay attention to your internal questions and to the stumbling points you run across.  After you have learned or acquired the skill reflect and consider what were the important concepts, what mis-conceptions did you have along the way and what could be common problems?

Next, mind map out the topics that you intend to cover in your presentation and consider relationships between the topics.  Sometimes, you may opt to include that mind map with the published materials.  Scapple is a nice straight forward and affordable tool for creating mind maps.

Example Mind Map from d3.js presentation
Then consider the relationships between the content in the mind map.  Think about the presentation order.  Consider if there is a way to frame the material in a story or a give it some context.  Then work on the presentation deck.  Strive to create a deck that has just enough material on the slide to help move the presentation forward.

Then practice.  Practice delivery and timing on your own.  Then try to present the material internally at work, then at a local group(s) and finally at conference(s).  Every time you do a presentation solicit feedback and adapt the presentation.  Sometimes, the presentation has to be adapted real time because of the environment.  A relaxed room of 20 people is very different then a conference hall with several hundred people in it.  By the time you are presenting at a conference you will have invested a lot of time in learning and internalizing the material as well as the presentation.

Experimenting with mongoDB's new $lookup feature

To familiarize myself with the new $lookup feature of mongoDB I did some experimenting.

I tried a couple of different document structures and companion aggregation queries. I based my experiment around the idea of having orders that have keys into related items detail documents.

After seeing the results of some of the aggregations at this point (parallel arrays) I felt like either you'll have to do more manipulation with the aggregation framework to get what you are after, or you'll need to write some code. I think I'd rather just write code. Where the result set out of a SQL join seems smooth, for these types of scenarios the $lookup operator just seems clunky.

In an actual implementation I think I would prefer to see a variant of either of the last two types of documents that includes price in the document. Product prices do change. For example, sale prices, promotions, etc.  Include the price in the order and you won't need to use the $lookup.

Use my code below, posted as a gist, as a jumping off point for your own experimenting.