PDC2008: A Day in the Life #6

Today was our first day of PDC2008 dry-runs on campus. To present a session at the conference, all speakers are required to rehearse their session in front of the content team and a handful of their peers. This is in addition to the proposals and outlines that are part of an earlier vetting process. It's one of the many methods we use to ensure that the content is both relevant and accurate.

During dry-runs, Microsoft employee feedback can be very direct. Thankfully, it is also honest and respectful. Ideally, the feedback leads to much stronger sessions that provide more value to attendees. With over 200 sessions, we'll review more than 240 hours of content in the coming weeks. Today's dry-runs included one session that needs a lot of work (or we may cut it), a handful of very good sessions that should be in great shape by the event, and two standout sessions that are fantastic as-is (though we still gave feedback to make them even better). I have to admit that one of the two standout sessions was unexpected, but I like good surprises!

On another note, the final version of our master agenda is due this Wednesday, October 8th, which means that we'll know the dates, times, and rooms for each session. We'll update the public web site next week to include a timeline view that you can use to manage your personal conference agenda. This should be good news to everyone who has sent e-mail asking when this information would be available.

I want to thank everyone who created a personal My Sessions list! Almost 55% of our attendees took the time to select sessions that they'd like to see at the conference, and as promised, I've used the data to (anonymously) generate a master agenda that should enable you to attend as many sessions in-person as possible. Overall, pending a few manual tweaks we'll make over the next two days, you should—on average—be able to see over half of the sessions you selected. Interestingly, the average My Sessions list contains 21 selections, even though there are only 18 time slots during the event.

For those who are curious about the genetic algorithm part of the process, I've included a graph of run number 19, which is only significant, because it was the master agenda with the lowest overall cost/highest fitness. The cost axis measures how good the agenda is with zero being "perfect." With the number of factors involved, it's highly unlikely that a perfect solution exists. You can see that the solutions started leveling out around generation 45 and stopped after generation 75.

Some have asked which factors are considered by the algorithm. Here's a list of the major factors that influence the overall cost/fitness value of each solution (each solution represents a possible PDC2008 master agenda):

  • Solutions that schedule deeper sessions (Advanced/Expert) after their corresponding introductory (Introductory/Intermediate) sessions are considered better. We refer to these as priors.
  • Solutions that place sessions into rooms that can accommodate their expected attendance are considered better. Any room that exceeds its maximum capacity during a run is severely penalized.
  • Solutions where overall room attendance is "balanced" are preferred. This prevents the algorithm from filling 1% of a room that can hold 2,000 while filling 98% of a room that can hold 500 people. This helps prevent unnecessary overflow situations during the event.
  • Solutions that schedule the same speaker more than once in a single time slot are considered terrible and are given the maximum possible cost (Int32.MaxValue in my case). They don't survive the early generations.
  • Solutions that schedule sessions before their product/technology is announced are severely penalized. We refer to these as holds. For example, we don't want to schedule a session on Windows 7 until after the appropriate keynote.
  • Solutions that allow attendees to see more of their My Sessions in-person are considered better. The algorithm actually iterates through all My Sessions lists for each solution and "schedules" each person in a room.

There are some smaller factors, but these are the key differentiators. It's rare that the smaller factors ever come into play in the grand scheme of things. With C# code that is not optimized, each run of 75 generations takes around 25 minutes on my recently-purchased 2.66GHz Intel Core2 Quad CPU (Q9450). I usually let it run multiple times overnight to compare best solutions.

While we've put a lot of effort into making a fantastic master agenda, don't worry if you can't make all of your sessions in person. Like we've done for our MIX events, a video recording of each session (other than pre-conference sessions) will be published within 24 hours of its completion for anyone to stream or download. How cool is that!?

Hope to see you at the event!