19 Jan 2010

How I Build Presentations, day 4: Slides

For the rest in the posts in this series please see the series index.

What a day, when I said yesterday that I could feel it coming together, I did not expect that it would be so fast and now at the end of day 4 the fundamental slides are done! Changes to point out for those who are watching the slides evolve:

  • The slides I mentioned on day 2 that were in danger of going away, are gone.
  • I moved the demo’s after the explanations – I have done this because this is such a complicated topic and so I need to do the explaining upfront so that I do not lose people in the demo. Normally I prefer the opposite as it adds more excitement to the presentation.
  • Another demo has been added – the slide on debugging I just can’t explain well enough in words so that will be a demo now.
  • Added 5 slides with code in, these are a great alternatives to demo’s because they don’t break (like demo’s can), can keep the session moving forward and not getting bogged down in too many demos and animation can help illustrate the code. I am not using animation here but it is an option. The risk of these code slides is that if you only have them, it may bore the audience. For them I am using them to illustrate alternatives to the demo I will do earlier in the presentation, this seem to be the nice trade off between entertaining demos and getting through it all.
  • References is hidden now, if people need to see it they can ask or download the slides. No one will be able to copy that many references down during a presentation anyway.


Slides at the end of day 4

15 Jan 2010

How I Build Presentations, day 3: Demo shells

For the rest in the posts in this series please see the series index.

Today’s work focused on the final reference demo for my presentation. For this presentation I need two, first a simple one to get the basic concepts understood and then a second which is much more complex and tougher for me to code. This is not quick task as just this reference demo took me almost 6 hours to get it to the point I was happy. Often during the building of the reference demo’s two side effects occur. The first is that I am learning, so I get the chance to find solutions and blog about them.

The second side effect, is that it makes me think of what sort of questions will be asked during the presentation. It is very important to spend time thinking about this, because while things may seem obvious to me they may not be to other people. Remember that your presentation doesn’t end with the slides – questions afterwards are part of it too and you need to prepare for them.


One of the ways I research is to post questions to StackOverflow

Once I have the reference demos built, I can then take that and build a new application from it – this new application will be the core for the actual demos. This is a tough exercise because I need to separate out the important code from the the bit’s that are needed but do not help enlighten the audience. For example if I had a WinForms app as a base for a demo, I will often have the UI built but I will not have all the events hooked up.

The next step is to figure out the the best way to explain the important code, that could mean typing it in during the demo, copy and paste or even simple un-commenting of code – what ever works best for the scenario as each has various trade offs. After I have done this exercise, I will have one fully developed application and one shell of an application for each demo.


What the reference demo code looks that I built earlier


What the demo shell for the same code looks like – note much less code, not comments etc… a clean slate.

Once I had finished my application base today I went back to the slide deck again. It is quickly changing from being a story board to becoming a slide deck as I work on the content and flow more. For this presentation I can feel I am over the big hump of “what” and starts to come together quicker.


Slide deck at the end of day 3

15 Jan 2010

How I Build Presentations, day 2: Reference demo

For the rest in the posts in this series please see the series index.

So today marks the first full day on this presentation, yesterday I only invested about 4 hours work into the solution. Most of today was spent on building the reference for my demo’s. This is a functioning demo system that includes many ideas and concepts and is something I build on. This code won’t be the actual demo code because once I have this I can break it down and  build my actual demo’s off it.

The reference demo gives me an opportunity to take my ideas, try them out, learn a lot about the issues and enables me to cherry pick scenarios for actual demos. For this presentation the core idea for my demo’s is working what prime numbers are there below a specified ceiling number. To start I coded the solution without any threading, then figured out various different ways of using threads and thread pools to enable threading.


Coding demo’s away in Visual Studio 2010

Once I had those first few done, I went back to the slide deck and started thinking about the order of the slides, where I want demo’s and what the flow will be and finally there is also a bit of cleanup of the slides. One of the things is that this is a process, and so changes occur. Some are small but have big impact like changing the title from Threading to Multi-Threading because that reflects the core theme better and will help people decide if they want to be attend the session. Some may seem more radical, like dropping a few ideas from this already because as the timing and theme seep out they do not fit well anymore. This is to be expected – a lot of this creative work is destructive and this screen shot of the slides at the end of the day, doesn’t tell you how many slides I created to just delete 15min later.

This brings me to another tip, which is always find out when the last possible date is to submit the title and description for your session is. Often your original presentation title/description will change and being stuck with the old ones will either force you down the wrong path or will annoy your audience when they arrive to find the session is not what they expect.


The slides at the end of day 2 – those on the bottom row are in danger of “being voted off the island”, but I am trying to hold on to them because they look so good.

14 Jan 2010

Holy download fever Batman

Seems that in the last week, and just in time for me to be in Canada where they have bandwidth, that a bunch of things have become available for download which deserve your attention:

VS 2010 Quick Reference Guidance is now out!

Plus hotfix 1 for it

Visual Studio Team Foundation Server 2010 Upgrade Guidance is now out!

The new Nokia 5800 firmware ( is out – which brings it up to the level of the X6 in features now!

Lastly, and sneakily at the end of this post, my latest open source tool is out. Now I am not going to tell you what it is, but it is for presenters (mostly) and requires .NET 4.0 Beta 2 and Windows 7. Hopefully the name will entice you to check out Rule 18!

14 Jan 2010

How I Build Presentations, day 1: Research and Plan

For the rest in the posts in this series please see the series index.

I tend to do a lot of presentations for work and in my free time too, and over the past few years though trial and error and presentation courses, I have had to learn a bunch of tricks to prepare for a presentation. What I am hoping to do with this series of posts, is to catalogue, each day, what I have to do in preparation for a specific session. The hope is that through this maybe my tricks can be help you in the future.

The first tip I can impart is that I never get up in a morning, prep a presentation and give it the same day. Why? because to properly prepare, even a short presentation can take days to get right and the more technical or complex the topic the longer it can take. The presentation I will build over this series ended up as a two hour presentation, however it took me almost SIX days of preparation for it.


Currently our team is using Basecamp for task management.

The easiest part of preparing a presentation is getting a topic, because all I need to do is go to my task list and see what has been assigned to me, in this case it is .NET Threading. Based on the type, this case it is a Technical Readiness (TR) session, I know what type of audience to expect and what level but I have no other ideas of how long it will be, will I present using demos, slides, both or neither or anything else, this will all seep out of the process.

The way I start with an presentation is to fire up PowerPoint and start dumping ideas on to slides. What I am doing here is NOT creating content, although some of it will remain as content in the finished presentation.What I am actually doing is setting up a story board for my thoughts. PowerPoint works great as a story board system and it has the benefit that later on, the content that remains does not have to be recreated. At this point there is no spell or grammar checking or animations.

However there are three things in the story board at this stage:

  • Thoughts, these are slides with just titles or a few words. They represent something I think I should bring up but have not got content for it yet.
  • Basic content, while it is a story board there is some basic content (often messy and unstructured) that I think will be useful.
  • Mistakes, I make loads of mistakes – which is a good thing because I will go through the tough learning and make the mistakes so that others so not need to.


The day 1 story board of my presentation

The actual process of getting content for a presentation is fairly mundane. It involves searching on Google, StackOverflow and SlideShare, and adding information I have already.

08 Dec 2009

Presentation Data Dump

Over the last year I have done a number of presentations and recently some of uploaded them (unfortunately I cannot upload all, as some contain NDA information) to SlideShare so here is the collection of presentations from the last 15 months or so, in no particular order:

  • ASP.NET Dynamic Data
  • JSON and REST
  • What’s Microsoft CRM all about?
  • Source Control 101
  • SQL Server Integration Services
  • What’s new in the .NET Framework 3.5 SP 1

Click the read more link to see and download them...

ASP.NET Dynamic Data





What’s Microsoft CRM all about?

Source Control 101

SQL Server Integration Services






What’s new in the .NET Framework 3.5 SP 1

04 Sep 2009

ASP.NET MVC Cheat Sheets

My latest batch of cheat sheets is out on DRP which are focused on ASP.NET MVC. So what is in this set:

ASP.NET MVC View Cheat Sheet

This focuses on the HTML Helpers, URL Helpers and so on that you would use within your views.


ASP.NET MVC Controller Cheat Sheet

This focuses on what you return from your controller and how to use them and it also includes a lot of information on the MVC specific attributes.


ASP.NET MVC Framework Cheat Sheet

This focuses on the rest of MVC like routing, folder structure, execution pipeline etc… and some info on where you can get more info (is that meta info?).


ASP.NET MVC Proven Practises Cheat Sheet

This contains ten key learnings that every ASP.NET MVC developer should know - it also includes links to the experts in this field where you can get a ton more information on those key learning's.


What are the links in the poster?

Think before you data bind
    TinyURL: http://TinyURL.com/aspnetmvcpp1
    Full URL: http://www.codethinked.com/post/2009/01/08/ASPNET-MVC-Think-Before-You-Bind.aspx

Keep the controller thin
    TinyURL: http://tinyurl.com/aspnetmvcpp2
    Full URL: http://codebetter.com/blogs/ian_cooper/archive/2008/12/03/the-fat-controller.aspx

Create UrlHelper extensions
    TinyURL: http://tinyurl.com/aspnetmvcpp3
    Full URL: http://weblogs.asp.net/rashid/archive/2009/04/01/asp-net-mvc-best-practices-part-1.aspx#urlHelperRoute

Keep the controller HTTP free
    TinyURL: http://tinyurl.com/aspnetmvcpp4
    Full URL: http://weblogs.asp.net/rashid/archive/2009/04/01/asp-net-mvc-best-practices-part-1.aspx#httpContext

Use the OutputCache attribute
    TinyURL: http://tinyurl.com/aspnetmvcpp5
    Full URL: http://weblogs.asp.net/rashid/archive/2009/04/01/asp-net-mvc-best-practices-part-1.aspx#outputCache

Plan your routes
    TinyURL: http://tinyurl.com/aspnetmvcpp6
    Full URL: http://weblogs.asp.net/rashid/archive/2009/04/03/asp-net-mvc-best-practices-part-2.aspx#routing

Split your view into multiple view controls
    TinyURL: http://tinyurl.com/aspnetmvcpp7
    Full URL: http://weblogs.asp.net/rashid/archive/2009/04/03/asp-net-mvc-best-practices-part-2.aspx#userControl

Separation of Concerns (1)
    TinyURL: http://tinyurl.com/aspnetmvcpp8
    Full URL: http://blog.wekeroad.com/blog/asp-net-mvc-avoiding-tag-soup

Separation of Concerns (2)
    TinyURL: http://tinyurl.com/aspnetmvcpp9
    Full URL: http://en.wikipedia.org/wiki/Separation_of_concerns

The basics of security still apply
    TinyURL: http://tinyurl.com/aspnetmvcpp10
    Full URL: http://www.hanselman.com/blog/BackToBasicsTrustNothingAsUserInputComesFromAllOver.aspx

Decorate your actions with AcceptVerb
    TinyURL: http://tinyurl.com/aspnetmvcpp11
    Full URL: http://weblogs.asp.net/rashid/archive/2009/04/01/asp-net-mvc-best-practi...