Mike Swanson

  • Mike Swanson's Blog

    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!

  • Mike Swanson's Blog

    PDC2008: A Day in the Life #5


    I have an internal PDC2008 gadget running in my Windows Sidebar, and it reports that there are only 25 days remaining before the big event. In "event time," that seems like tomorrow! I'll probably go to sleep tonight and wake up in the Los Angeles Convention Center. I'm not sure if I'd consider that a dream or a nightmare at this point. :-) There's still a lot to do!

    My days are packed with PDC2008-related meetings (and some MIX09 meetings, if you can believe it). Last night, we published 25 brand new sessions, and here are a few of the highlights:

    • Miguel de Icaza is presenting a session titled Mono and .NET. It's great to have Miguel present at PDC!
    • We announced a handful of sessions from Microsoft Research, including Designing the World Wide Telescope by Jonathan Fay and another called Contract Checking and Automated Test Generation with Pex. Parallelism and concurrency are hot topics this year, and Concurrency Analysis Platform and Tools for Finding Concurrency Bugs should be extremely useful.
    • A languages panel is starting to become PDC tradition, and this year, we've assembled a panel of experts for the ambitiously titled The Future of Programming Languages. Not only will you hear from the top language designers at Microsoft, but we'll have a number of industry luminaries too. This is always a very popular session.
    • Microsoft .NET Framework: CLR Futures with Ian Carmichael and Joshua Goodman should appeal to anyone interested in the future of managed code development.
    • Learn about where the Windows Presentation Foundation is headed with Kevin Gjerstad in WPF: Futures.
    • To see how our MIX Online Team has made it easy to work with Microformats, be sure to attend Oomph: A Microformat Toolkit by Karsten Januszewski.

    On a related topic, you may remember the post I did awhile back called PDC 2008 Conference Scheduling Using a Genetic Algorithm. Well, the time has finally come to feed the algorithm some real data and generate a master agenda that enables you to attend your favorite sessions in-person. This is a bit of an experiment for us this year, and I need your help to make it work.

    Please take a few minutes to sign in to the PDC2008 sessions page (the Sign In button is in the upper right corner), and add sessions that you plan to attend to your My Sessions list. You can either check the box next to each session or click the Add to My Sessions button. If you've already done this, I'd ask you to review your list, since we've added a lot of new content over the past month. Note that by adding sessions to your list, you are not committing to anything; you're always free to attend any session you'd like. The more data you provide, the better we can generate a master agenda that helps you get the most out of your PDC experience.

    Last, I want to point out something that Adam Kinney is coordinating this year called PDC Badges. The PDC2008 badge holders have two slide-in pockets on the front. The top pocket is where your name shows up, but the bottom will accept a standard business card...or anything business-card-sized (the imagination wanders). By the way, why do I always think of badgers when I talk about badges?

    We'll provide a "default" card and coordinate some special achievement cards that you can collect throughout the event. An example might be, "I met Mike Swanson," though I'm not sure that'd be much of an achievement. :-) The idea is that they're unique, cool, limited, and fun to collect. You can keep your current-favorite card in the front—prominently displayed—while the lame and embarrassing cards are hidden from view.

    The cool part is that you can print your own badges and bring them to the event. Think of it as a way to tag yourself. While you can certainly use any vendor you choose to print the business cards, I've had great luck with MOO (I've posted about their MOO MiniCards before). You can upload as many as 50 different designs for orders of 50 or 200 business cards. Their prices are good, and the quality is high.

    Well, that's about it for this post. I'm not sure how many more posts (if any) I'll sneak in before PDC2008, but if you're planning to attend the event, stop me and say "hello" as I run down the hallways. I love meeting my readers face-to-face!

  • Mike Swanson's Blog

    More Bits, Windows 7 Sessions, and Keynote Speakers for PDC2008


    As promised, we published 17 additional Windows 7 sessions this morning. If you were wondering how much you'd hear about Windows 7 at this year's Professional Developers Conference, you now have the answer: a lot. A few of the session descriptions simply say "TBD"...and that's not because we're unsure about what we plan to talk about. ;-) I can tell you that we have even more sessions that won't be published until the event itself.

    If that's not enough, we're also giving every attendee a pre-beta copy of Windows 7. Yes, you heard that right. You'll be able to install your own copy of Windows 7 and play with it on your hardware. This is a very limited release, and PDC2008 attendees will be the first to get it. Gotta love the PDC!

    Finally, we announced a bunch of new keynote speakers, including Steven Sinofsky, Scott Guthrie, Bob Muglia, and David Treadwell. This is a powerhouse lineup, and they have a lot of exciting announcements to make.

    Only one month to go! Please keep your hands and arms inside the ride at all times, and remain seated until the ride comes to a complete stop.

  • Mike Swanson's Blog

    PDC2008 Hard Drives, Services, Windows 7, and More


    It's going to be an awesome PDC2008, baby! Before you read the rest of my post, watch this short 4 1/2 minute video that we published this afternoon on Channel 9 for some helpful context. Please forgive my super-reflective forehead...I still remember the "oily" result from when my mom had me fill out a Mary Kay skin type questionnaire when I was a kid.

    To start, I get a lot of questions about the overall theme of this year's conference. We've published nearly 140 sessions already, we'll publish many more on Windows 7 later this week, and even more will be published on October 1st (oh, and we'll have a few super-secret sessions that can't be revealed until after the keynote announcements at the event). But what will the catch phrase be for PDC2008? Like we've had "the Longhorn PDC" and "the .NET PDC" of years past, this year's event is all about Software + Services.

    For developers and architects who have been around for awhile (have you noticed my gray hair?), the "software" side of Software + Services is the easiest to understand. It's the software that you develop for installation on a PC or device that leverages local computing resources like memory, computation, and storage. Or, it's the software that you build to run on a web site...or maybe even a background process that runs on a server in your company's data center. It can take many forms, whether you're developing using Microsoft platforms and tools, managed or native code, or even software that's built using competitive technologies.

    You're probably also familiar with "services." Perhaps your software calls a third-party web service to help track shipments. Maybe it provides data to be mapped with one of the online mapping sites, or maybe it uses something like SQL Server Data Services to store information online. Regardless, some of the work is performed elsewhere using other computing resources. Like a traditional service industry, you pay for the services that are provided (that is, unless they're free).

    The combination of software plus services allows you to architect and build software that uses local computing resources where it makes sense and to call remote services to take advantage of additional scale, computing power, storage, location, redundancy, and more. Of course, there will continue to be software that runs completely on local devices, and there will be new kinds of software that run completely as a service...or "in the cloud," so to speak.

    At PDC2008, we'll announce some strategic bets that Microsoft believes will shape the future of software and services and explain how you can take advantage of these new opportunities with our help. I have to admit that I was initially skeptical that services, cloud computing, and utility computing would represent a significant shift. But, now that I've wrapped my brain around the possibilities, and I've seen what can be accomplished, I personally believe that this is the start of a new and exciting chapter in our industry.

    On another note, we announced today that every attendee will receive a cool, PDC2008-branded, 160GB external hard drive loaded with software! As far as we know, this is the first time that external hard drives have been given out in such large quantities at a conference (8GB thumb drives now seem so yesterday). I don't know about you, but I'd love the drive even if it were blank! The fact that we're loading it with geek candy makes it all the better!

    Last, if you haven't been following our weekly Countdown to PDC2008 show, they're all tagged PDC08 on Channel 9. Each episode is 10 minutes or less to respect your time.

    I hope to see all of you at the event!

    Update: Colleague Tim Sneath also posted on these topics today.

  • Mike Swanson's Blog

    Update on My Illustrator Plug-In and Flash to XAML Conversion Tool


    Just over three years ago, in July, 2005, I released the first version of my Adobe Illustrator to Avalon/XAML Export Plug-In. The plug-in started off as a weekend project, and it’s since become quite popular. The plug-in is included in most WPF and Silverlight books, and it’s fun to see it referenced when I’m thumbing through new releases at Borders or Barnes & Noble. I hadn’t been watching the download stats, so I checked tonight and was surprised to see that it’s been downloaded over 75,000 times (actually a bit more, but the stats aren’t complete). Even if I only counted the most recent release, that would make it a top download on CodePlex. That’s pretty cool.

    I receive e-mail about the plug-in almost every other day, and here are the most common questions and their answers:

    • Do you plan to update the plug-in?
      Unfortunately, my role has changed within Developer & Platform Evangelism (DPE) over the years, and I no longer focus on WPF, Silverlight, or XAML. As such, it’s unlikely that I’ll have the time to update the plug-in.
    • Do you plan to release the source code?
      While releasing the source code has been my goal since day one (actually, even prior to its first release), there are many complicated reasons why I can’t. I’m not happy about it either, but it is what it is.
    • Does it run on a Mac?
      No. I have nothing against the Mac, but I’ve never owned one, and I’ve never done any Mac development. Sorry. Update: there is now a Mac version of the plug-in.
    • Why doesn’t it do _____?
      Most of what it can or can’t do is listed in the Features grid on the plug-in page.

    A colleague pointed me to Hanselminutes Show #120. Jump to 17:34 to hear Felix describe his workflow. Here are some of the juicy quotes that help to validate why I created the plug-in in the first place:

    “Every designer knows Photoshop and Illustrator inside out.”

    “That Illustrator plug-in has been available to me and I use it—I say—daily.”

    “It’s unbelievable. It’s such a vital tool.”

    It’s great to hear this from someone who uses the plug-in on a daily basis, and frankly, his feedback has motivated me to think about updating the codebase. No promises, but you never know. :-)

    By the way, if you’re looking for an Illustrator tool that you can extend, check out the XamlXporter for Illustrator project on CodePlex.

    The other XAML-related tool I’ve written is called SWF2XAML, and it was first released in November, 2006. Compared to the Illustrator plug-in, SWF2XAML has a much more complex codebase. SWF2XAML will open a Flash file (SWF), parse structures from the file format, generate a frame of data, convert it to WPF, and display it in a window. The XAML can then be exported for either WPF or Silverlight use. As a convenient side effect, embedded bitmaps are also automatically exported.

    According to the stats, SWF2XAML has been downloaded over 42,000 times, and its most recent version alone would dethrone the Illustrator plug-in (if it was hosted on CodePlex, that is). Again, I’m amazed. It’s been referenced in recent WPF and Silverlight books, but it isn’t as pervasive as the Illustrator plug-in.

    There are three questions I receive frequently for SWF2XAML:

    • I receive the following error message: “Input string was not in a correct format.” What’s up?
      This is a known bug that occurs when the numeric format in Windows is set to a non-United States format (i.e. 123.456.789,00). The workaround—while inconvenient—is to change the Regional Settings in Windows to use English (United States). This seems to do the trick every time.
    • Do you plan to update the tool?
      Same answer as the Illustrator plug-in, I’m afraid. :-(
    • Does it convert animation or sound?
      No. While it could be extended to convert animations and sound, it was built to recover static assets from SWF frames and convert them to XAML. For many, once the assets are converted, they can be used (and even re-animated) in a XAML tool of choice. Many large web sites have used SWF2XAML to convert their Flash assets to XAML for use with Silverlight.

    If you want to know how to read a Flash file (SWF) with C#, check out my Example C# Code for Reading Flash (SWF) Files. For insights into how the Flash shapes are parsed and converted to XAML, check out Converting Flash Shapes to WPF. Last, I encourage you to experiment with another tool that converts Flash files—including both animation and sound—called theConverted – Swf to Xaml Converter (the Samples page has some good demos).

    Thanks to everyone who has used these tools over the years! I’ve really appreciated the suggestions and feedback I’ve received, and I’m very happy to hear that they’ve helped you be more productive.

    Update: Robin Debreuil, creator of theConverted, points out that he has recently added the project to CodePlex. Thanks, Robin!

Page 6 of 74 (369 items) «45678»