Mike Swanson

  • Mike Swanson's Blog



    PDC09Are you ready for our 14th Professional Developers Conference!? We’re back at the Los Angeles Convention Center this November, and as always, it’s going to be fun event! We have one day of workshops (formerly referred to as pre-cons) on Monday, November 16th, and the main conference runs from Tuesday, November 17th through Thursday, November 19th.

    Our event site at www.microsoftpdc.com opens for registration in early August. In the meantime, here are a few ways to plug-in to the news and announcements…

    • First, add yourself to the PDC09 mailing list so we can send you information about the conference (like registration details, discounts, speakers, sessions, etc.). We don’t send a lot of mail, so you don’t have to worry about your inbox filling up.
    • Follow @PDC09 on Twitter, and if you tweet anything about the conference, be sure to include the #pdc09 hashtag so we can hear what you have to say (yes, we listen). If you’ve been resisting Twitter, I have to tell you that it’s a fantastic way to keep up with everything that’s going on. If you don’t want to follow on your mobile device, search the #pdc09 hashtag on occasion for the latest updates.
    • RSVP for the PDC09 Facebook event for yet another way to stay plugged-in to the event.
    • If you’re a company that would like to sponsor or exhibit at PDC09, we’ve recently opened the submission process. There are limited sponsorships and exhibitor booths available in the convention center, so my recommendation is to submit early. But you knew I’d say that, didn’t you? :-)
    • Bookmark the www.microsoftpdc.com event site. That’s the central location for everything related to the conference.

    In addition to being on our PDC09 Core Team (which means that I’m somehow involved with just about everything related to the event), I own our keynotes this year. I’m also part of the team that is working to elevate our online experience; we heard a lot of feedback at PDC2008 and MIX09, and we’re doing our best to address that feedback for PDC09.

    If you have any questions or suggestions, feel free to add a comment to this post or contact me directly. And watch this space for future posts about PDC09 as we get closer to the event.

  • Mike Swanson's Blog

    MIX09 Keynote and Session Videos


    Whew…what a show! Thanks to everyone who joined us in Las Vegas last week for our fourth MIX conference, MIX09. It was great to meet many of you in person and to associate Twitter aliases with real names. It’s awesome that someone can walk up and say, “Hi, I’m WoogyChuck,” and I actually know what that means!

    As we’ve done in prior years at both PDC and MIX, all keynotes and sessions were recorded and published within 24 hours by the talented Brian Keller. The first video format we publish is WMV, and the other formats show up as they’re encoded. By now, almost all of the videos in all of the formats have been published. The few that remain will be added over the coming days.

    Special thanks to Greg Duncan for taking our session data and publishing a simple list of links within days of MIX09. Based on Greg’s work, feedback from the #MIX09 tweets, direct e-mail, and many blog comments, our online team quickly implemented a dynamic list of all MIX09 session and keynote recordings. We’ve learned that you like this straightforward format, and we’ll make sure we add this to our list of features for PDC09 and MIX10. If you prefer to browse the videos by image, check out the thumbnail view.

    To download videos for offline viewing, you have a few options:

    • Visit the list of all MIX09 sessions, and download them individually.
    • Use your favorite RSS tool to download all of the videos in your format of choice (All, WMV, WMV High, MP4). Note that there are also many non-session videos and audio recordings that are available in WMA and MP3 format.
    • If you’re like me and prefer a command-line tool, download a recent build of cURL (1.2MB), and extract it to your folder-of-choice. Then, download MIX09Downloader.zip (1.27KB) and extract the MIX09Downloader.bat file to the same folder. From a command prompt, start MIX09Downloader by passing it one of the following parameters: WMV-HQ, WMV, MP4, Zune, PPTX. Then wait. :-) For files that aren’t available, cURL will download a file that is around 220 bytes in size (if you change the extension to .htm and open it, you’ll see that the file is simply an HTML “not found” error page).

    Here’s how much disk space you need to plan for (~45.5GB in total):


    = ~22GB  


    = ~7GB  


    = ~530MB


    = ~10GB  


    = ~6GB  



    If you'd like to rename your downloaded files, I've created a MIX09 Renamer batch file (4.19KB) that will do it for you. Extract the MIX09Renamer.bat file to the folder that contains your downloaded files, and from a command prompt, type MIX09Renamer WMV to rename all of the .WMV files to the full session title. By changing the parameter, you can also rename your PPTX and MP4 files. For example:

    B01M.wmv is renamed to B01M - Scaling a Rich Client to Half a Billion Users.wmv

    Last, but not least, we did record some of the workshop sessions. However, because we don’t always record them for publishing (often for contractual reasons), we’re working to determine which ones can be posted. Also, we’ve noticed some audio/video quality issues with some of them that we’re trying to fix. It’ll likely be a few days to a week before we know more, and I’d encourage you to keep your eyes on the MIX09 session list.

    Is there anything else that we’ve missed? I’d love to hear your feedback!

  • Mike Swanson's Blog

    Getting Ready for MIX09


    Our MIX09 conference in Las Vegas is only one week away, and things are heating up! We’ve finalized the keynote content, published all of our session titles and abstracts (well, except for a handful we’ll announce at the event), locked-down the on-stage customers and demos, and handed off the bits for replication. It’s a flurry of activity, and we’re all very excited!

    I thought I’d take a moment to highlight a few things that should help you plan for MIX09, even if you can’t join us in-person:

    For those of you who are attending MIX09, if you see me wandering the halls, stop me and say “hi.” I love meeting my blog readers!

    Have a safe trip, and I’ll see you in Vegas!

  • Mike Swanson's Blog

    Native Text and Symbol Support Added to My Illustrator to XAML Plug-In


    Wow! I can hardly believe that this is the third post on my Illustrator to XAML plug-in in the past month. After not touching the code for well over two years, it’s been fun digging back into the project. Adding Mac OS X support has been a brand new challenge for me, and I’ve enjoyed every minute. The response to the test version of the Mac plug-in has been fantastic. It’s clear to me that there are a lot of Illustrator users on the Mac who want to work with Silverlight and WPF! The good news is that the PC and Mac codebases for the plug-in are essentially in-sync, and any improvements that I make in the future should apply to both versions.

    One of the more common requests I’ve received is for native text support. As a matter of fact, native text support was one of the first features I started to build way back in 2005. At the time, though, when I dug-in to the Adobe Text Engine (otherwise known as ATE), it seemed like I had teleported into another dimension. The text engine provides a lot of typographic flexibility, and the API is newer than many of the more traditional APIs in Illustrator. I was already in unfamiliar territory building a plug-in, let alone learning about yet another deep and complex API. So, I disabled my early text code, and it’s been dormant ever since. The workaround has always been “convert your text to outlines before you export.” Of course, this method offers very little flexibility when you want to dynamically change text at runtime, and the text outlines significantly bloat the XAML.

    The new version of the plug-in exports native point text. However, it does not export text that has been fitted to a path (for an example of this limitation, check out the Yellowstone Map illustration on my updated Eye Candy page). Fortunately, most text in Illustrator is point text, so this shouldn’t present a problem for common cases. Illustrator also supports many advanced text features that are not currently exported, so you may notice differences in the way text is rendered. One of the text features that is not handled is the relative spacing between letters and words, otherwise known as tracking. Here’s an example of some Illustrator text with increased tracking (top) and how the exported XAML is rendered with WPF (bottom):

    I added the red lines to show that the anchor point of each TextBlock element is correctly aligned. However, because the tracking value is not accommodated in the XAML, each text run falls out of alignment. By the way, the Illustrator API returns three individual glyph runs for this single word, which is why there are three TextBlock elements. Since all of the other attributes of this text run are identical (color, baseline, font size, font family), a future enhancement to the plug-in should combine all three of these glyph runs into one. For now, the manual solution would be to simply delete all but the first TextBlock.

    While I was digging through the code, I also uncommented some early work I had begun on symbols. In Illustrator, a symbol is an art object that can be reused multiple times within a single document. So, after a symbol is created, instances of that symbol can be added to the document many times without having to create multiple copies of complex artwork. A great example of symbol use can be seen in the aforementioned Yellowstone Map on the Eye Candy page. I’ve included a small section of the map to the right showing square black symbols used to mark picnic areas, food, lodging, etc. Ideally, symbols would be exported to a ResourceDictionary and referenced in the exported XAML, though this is not the case in the current version.

    The last tweak I made was to improve the behavior of the shift keys in the PC version. The keyboard detection logic I was using seemed unreliable, and often times, the XAML editor would launch even though the left shift key was not being held down. I’ve received a handful of e-mail inquiries about this behavior, and I’m happy to say that I was able to fix it in this version. Why shift keys instead of dialog box choices, you ask? Well, it’s mostly because I didn’t want to spend the time to learn how to use the Adobe Dialog Manager (ADM)…yet another complex API. Plus, I’ve grown to like the simplicity and ease of the shift key approach.

    I updated the Adobe Illustrator to XAML Export Plug-In site to bring it a bit more up-to-date. Nothing radical, though I did use Robby Ingebretsen’s fantastic Kaxaml editor to create some new visuals (thanks, Robby!). There’s also installation instructions for both PC and Mac along with download links to the most recent version.

    If you’re planning to attend MIX09 and want to chat about the plug-in (or anything, really), send me a tweet when you’re in Vegas, and I’m happy to hook-up. Otherwise, feel free to leave comments, feedback, and suggestions to this post or drop me a line directly.

    Most of all, have fun! :-)

  • Mike Swanson's Blog

    Test Version of My Illustrator to XAML Plug-In for the Mac


    One of the most frequent questions I get related to my Adobe Illustrator to XAML Export Plug-In is: “does it run on a Mac?” Unfortunately, the answer has always been “no,” because I’ve never owned a Mac, and I’ve never done any Mac development…ever. If you can believe it, the last Apple computer I wrote code for was the Apple IIe. Those were the days!

    Last week, I asked around the office, and between Tim Sneath and Thomas Lewis, I was able to borrow a Mac Mini to play around with (thanks, guys!). I installed OS X Tiger and Xcode 2.5, because I wanted to target the Illustrator CS3 SDK (which recommends that OS/tool combination). I would have gone back a bit further, but the CS and CS2 SDKs are both based on CodeWarrior, and I didn’t want to make my situation any more difficult by using even older versions of the OS and tools. Because of this choice, the plug-in should work fine with Illustrator CS3 and CS4, though I’ve only been able to test it on CS4 myself.

    Fortunately, when I wrote the original plug-in for the PC version of Illustrator, I mostly stuck to the platform agnostic functionality and types that are exposed by the SDK. This made it much easier to port the code to the Mac. Here are the three biggest challenges I encountered:

    • General unfamiliarity with the Mac – since I haven’t used a Mac since the Mac Classic (before it was even called “Classic”), just finding my way around the system felt like I was exploring an alien planet. Where did my Illustrator window go!?!?
    • Xcode – being unfamiliar with the Mac didn’t make it any easier to understand the project system or the Xcode developer tools. And Carbon? What’s that? :-)
    • Platform-specific code – if you’ve used the PC version of the plug-in, you know that you can hold down the left shift key during export to pop-up your default XAML viewer; if you hold down the right shift key, your WPF export uses DrawingBrush syntax. The Mac API that I found doesn’t allow me to distinguish between the left and right shift keys, so the Mac version exports DrawingBrush syntax regardless of which Shift key is held down.

    If you’d like to help test, download Mac version 0.18 (see update below) and copy the XAMLExport.aip file to your Illustrator plug-in folder. Like the most recent PC version, you’ll find "XAML for Silverlight (*.XAML)" and "XAML for WPF (*.XAML)" as new formats under File/Export. I’ve run many files from my test suite through the plug-in and have so far been able to add all of them successfully to Expression Blend 2 on my PC.

    It may help to read through the Features list on my plug-in page to see what works and what doesn’t. Also, I’d love it if someone could test it with Illustrator CS, CS2, and CS3 and report their results…I only have CS4 on the Mac.

    Thanks in advance for your help and feedback!

    Update: A newer version of the plug-in is now available, including version 0.19 for both the PC and the Mac.

Page 3 of 74 (369 items) 12345»