Articles from Tools/Utilities

Interesting First Impressions with the IE9 Preview

By Michael Flanakin @ 10:27 PM :: 5886 Views :: Microsoft, Predictions, Open Source/Standards, Tools/Utilities, User Experience :: Digg it!


It's been almost a year since my plea to the IE team. Windows 7 has rocked, Office 2010 is looking very nice, and, most recently, Windows Phone 7 Series has amazed the world. All these great things coming together are really putting pressure on the IE team to deliver something revolutionary. Back in Nov 2009, the team talked about the tremendous performance improvements, sub-pixel text rendering, and HTML5/CSS3 support. All-in-all, there was a quick burst of information and buzz around what IE9 could become, but then it died off very quickly. I admit, I was quite skeptical -- and still am -- but at least it showed the team is heading in the right direction. In what seems to be the IE team's typical process, silence happened and annoyance returned.

Today, Microsoft announced the release of an early IE9 developer preview. I was pretty excited about this, since I've been waiting for it since they first started talking about IE9 in November -- well, maybe since IE8 was released without some of the big features I was hoping for. Nonetheless, I was grounded pretty quickly. For better or worse, there are some interesting things that came out of the preview.

1. Uhh, What's This Window?

I'm pretty willy-nilly with new software. Not too smart, but whatever :-P I installed the preview and expected magic. As it installed, I started closing other IE8 windows. All of a sudden, a new Window popped up. "Woo-hoo, it's done! IE9, here I come!" Then I noticed I left one IE8 window open. I switched over to close it and hesitated -- "Why is there an IE8 window still open?" I switched back to the new IE9 window and thought, uhh, this isn't a browser. There's no back button; no address bar; nothing. "Ah, maybe it's just a 'Welcome to IE9' dialog before the IE9 greatness kicks in!" I close the IE8 window, open another with the pinned icon on my taskbar. "Uhh, nothing changed." *Help > About...* Still IE8. WTF!? I guess this is more of a literal "preview" than I thought. No browser; just a chance to see how their pre-built tests work. Meh.

2. The Tests Work... Mostly

I've said it before and I'll say it again, just being part of the game isn't going to fly. And, if this is all the IE team has to show, I'm not impressed. Don't get me wrong, I love everything they show, from performance to sub-pixel text rendering -- seriously, this isn't something to scoff at, it's a very noteworthy improvement for any browser -- to all the HTML and CSS improvements. But it's not enough. Heck, the "Falling Balls" example didn't even work. I really want to bash the performance improvements. I even wrote this paragraph a few different ways to express my disapproval in different ways, but it all comes down to this: you won't realize how drastic the improvements are until you see IE8 and IE9 running side-by-side. The Flying Images example seems obvious, when you see it in IE9, but when you go back and watch it in IE8, you think, "Is this seriously what I'm putting up with today!? I feel lied to; cheated. How dare you, IE team; how dare you!" With all that said -- and seriously, the perf improvement is tremendous -- I'm still not happy (here's where my desire to bash performance comes in). While you definitely notice that aspects of performance have improved, the perceived performance really sucks. It's not the page loading that I'm talking about, tho; it's the standard page interaction that's defunct. Even clicking some of the links used by the examples were ridiculously buggy. I guess there's a reason they called it a "developer preview"... wait, that doesn't say "developer," it says "platform"...

3. "Platform Preview"

In an effort to find the hidden navigation controls, I scoured the lifeless window edges. The best I could find was the Page > Open... menu option. Well, at least that's a way to test out other pages. I figured, what better way to test out the new browser than to write a blog post. Let me just tell you that I'm dying here. I mentioned the perceived performance sucks already. Try typing in this thing. I feel like I'm clawing my eyes out -- and I'm talking about with freshly trimmed fingernails. You know what I'm talking about, when you trim your fingernails down to the nub and putting even the slightest pressure on them hurts. Now, try to claw your eyes out with that. That's why I feel like I'm doing right now. Every character is painful. *Ouch, oooh, ouch...*

Okay, I'm exaggerating; but it is painful. But, now that I'm able to get past the examples, I'm realizing I have two versions of IE installed. Hmm... very interesting. Remember the days when IE was a crucial part of Windows and couldn't be unbundled? Well, they seem to have figured out how to install a new rendering engine without touching the old one, hidden deep in the innards of Windows. Of course, they did introduce the ability to completely uninstall IE in Windows 7, so maybe that's a moot point nowadays. Either way, this is a first for IE, as far as I know. Then it hit me... "platform preview." Are they saying something with that? Are we talking about a rendering engine completely detached from the Windows desktop OS?

4. IE9 on Windows Phone?

In the original Windows Phone 7 Series announcement at Mobile World Congress 2010, Joe Belfiore commented that the phone is more than just the Mobile IE we see in Windows Mobile 6.5 and its predecessors. He said it came from the desktop browser code-base. This alone doesn't mean much, but when he called out the sub-pixel text rendering, my mind started adding things up. Is this IE9 on Windows Phone!? Nobody has said that, but you have to wonder. I've read that Windows Phone 7 Series is based on IE7 with some back-ported features from IE8, but that doesn't really make sense, when you consider that sub-pixel rendering is only coming in the next version of the browser. I still have to wonder about this. It doesn't make sense to back-port that feature two versions. Maybe it's IE8 with that one feature back-ported, but maybe it's IE9. If that's the case, IE9 will need to be on a hyperactive beta period and, as I mentioned before, they definitely aren't close to being done, yet, and I'm admittedly not confident they even know how to do that.

5. Where's the Navigation?

I really want to get back to the preview. I'm still annoyed at the fact that I have to get to sites in a hacky way. Why would the IE team do that!? Do they not want us to use the browser? That can't be it. Maybe they didn't have time to finish out the preview and just crammed some stuff together to make the Mix10 keynote. Maybe, but I doubt it. I didn't notice this at first, but the menu options aren't standard. Specifically, there's a "Page" menu instead of a "File" menu. Perhaps I'm reading into this too much, but "Page" sounds like more of a ribbon tab than a menu option. Maybe the reason we're getting such a scaled-back browser is because the old chrome isn't there anymore -- we could be getting the first ribbon-based browser. I'm very excited about this possibility. At the same time, I can't ignore the fact that this will be a very touchie UI, given the ever-popular tab-based browser. IE7 brought me back from Firefox because the UI was slim and just looked and felt more professional. IE9 with a ribbon done right -- extra focus on "done right" -- could seriously bring people back to IE. At the same time, it's an opening for haters to complain about the ribbon. I whole-heartedly believe the ribbon interface is demonstrably better than menu-based interfaces. So much so that, if I had my way, I'd never use another menu-based interface again. I'm not saying the ribbon is the way to go in every case, but I don't know why a traditional menu would ever be the "right" experience. It just isn't optimal.

With all that said, maybe the ribbon isn't the IE team's target. Maybe they've put a lot of thought into how users should be interacting with the browser. In either case, I welcome the change. Chrome took an interesting move with minimization, but I don't think it was drastic enough. Google played it safe with Chrome. Microsoft's not afraid of taking big risks when it comes to user experience -- just look at Office 2007, Windows Phone 7 Series, and even Visual Studio 2010 to a lesser degree.

No matter what happens, I'll be eagerly awaiting either the next preview/beta. At the same time, I'm not holding my breath. The IE team has a lot to prove with respect to being agile and, if they really are creating a new UI, that'll just complicate things more. I'd like to say we'll see something by the end of June, but who knows with that team. All I can say is, IE team, prove me wrong; please, prove me wrong!

Boot to VHD: Create VHD from GUI

By Michael Flanakin @ 5:05 PM :: 3833 Views :: Technology, Tools/Utilities :: Digg it!

Windows 7

I've mentioned how to create a new VHD from the command line, now let me mention how you can create a new VHD from the Windows GUI.

  1. Open Computer Management (Start > Run… > compmgmt.msc)
  2. In the left pane, select Storage > Disk Management
  3. Right-click Disk Management, click Create VHD
  4. Specify VHD settings and click OK
    • Location -- the path where you want to save the VHD
    • Size -- specify a size smaller than what's available on your system
    • Format -- choose dynamic sizing to slowly grow to the full disk size (what I'd recommend) or fixed, if you want to just allot the space outright and avoid potential out-of-space problems
  5. In the main, center pane, right-click the label on the left for the new, unknown/unallocated disk, click Initialize Disk
  6. Click OK
  7. In the main, center pane, right-click the main disk space visualization, click New Simple Volume...
  8. Click Next
  9. Click Next
  10. Click Next
  11. Specify a volume label, click Next
  12. Click Finish
  13. Put Win7 or Server 2008 R2 DVD or bootable USB drive in
  14. Restart your computer
    NOTE: You'll need to be sure you can boot using the necessary device in BIOS settings (obviously)
  15. Press any key to boot from CD or DVD
  16. When the Install Windows screen is shown, press Shift+F10
  17. Type d:, press Enter
  18. Type diskpart, press Enter
  19. Type select vdisk file="d:\machines\win2008r2.vhd", press Enter
    NOTE: Windows re-assigns your primary drive when running thru the installer. In all of my tests, C: was re-assigned to D:.
  20. Type attach vdisk, press Enter
  21. Type exit, press Enter
  22. Type exit, press Enter
  23. Click Next
  24. Click Install Now
  25. Select desired OS (server only), click Next
  26. Check I accept the license terms, click Next
  27. Click Custom (advanced)
  28. Select Disk 1 Partition 1: <label>, where <label> is the volume label you applied in step 11
  29. Click Next and continue to install the operating system as you normally would 

After rebooting, Windows Boot Manager will give you an option to boot into either the host or guest OS instances.

Boot to VHD: Create VHD from Command Line

By Michael Flanakin @ 3:40 PM :: 10109 Views :: Technology, Tools/Utilities :: Digg it!

Windows 7

Virtual PC is great. Well, it's ok -- it does the job. There's a better way, tho, and that better way is to just get rid of the host OS... or, ask the OS to politely let you get by for a while. That's exactly what Windows 7 does by enabling you to boot into a VHD.

Scott Hanselman Syndicated feed blogged about booting from a VHD in more detail, but I wanted to break it down into discrete steps. For simplicity, I'm going to start from scratch, creating a VHD from the command line.

  1. Put Win7 or Server 2008 R2 DVD or bootable USB drive in
  2. Restart your computer
    NOTE: You'll need to be sure you can boot using the necessary device in BIOS settings (obviously)
  3. Press any key to boot from CD or DVD
  4. When the Install Windows screen is shown, press Shift+F10
  5. Type d:, press Enter
  6. Type md machines, press Enter
  7. Type diskpart, press Enter
  8. Type create vdisk file="c:\machines\win2008r2.vhd" type=expandable maximum=50000, press Enter
    NOTE: Be sure to set a maximum your machine can support; Windows will temporarily expand the VHD to that size when you boot into it
  9. Type select vdisk file="c:\machines\win2008r2.vhd", press Enter
  10. Type attach vdisk, press Enter
  11. Type exit, press Enter
  12. Type exit, press Enter
  13. Click Next
  14. Click Install Now
  15. Select desired OS (server only), click Next
  16. Check I accept the license terms, click Next
  17. Click Custom (advanced)
  18. Select Disk 1 Unallocated Space (...GB)
  19. Click Drive options (advanced)
  20. Click New, then Apply
  21. Click Format, then OK
    NOTE: If you see a "Windows cannot be installed to this disk..." error, ignore it.
  22. Click Next and continue to install the operating system as you normally would

After the installation completes, Windows Boot Manager will give you an option to boot into either the host or guest OS instances. Gotta love it!

Silverlight 3 Tools Offline Install

By Michael Flanakin @ 8:30 AM :: 0 Views :: .NET, Development, Tools/Utilities :: Digg it!


Ever try to install the Silverlight dev tools in an environment with "filtered" or even no access to the internet? If so, you've probably taken a look at the errors in the log and seen the following error:

Error from JobError Callback : hr= 0x80190193 Context=5 Description=HTTP status 403: The client does not have sufficient access rights to the requested server object. . Percentage downloaded = 0

For some tools, like .NET 3.5 and 3.5 SP1, there's an offline installer available on their respective download pages. Unfortunately, the Silverlight dev tools don't have that. I major oversight, if you ask me, but what can you do? Note that this was a problem with Silverlight 2 and 3. I haven't heard anything about a fix for the future, but I have to think they realize the work-around is ridiculous. Enough of my blabbering, tho...

  1. Download and save the Silverlight 3 Tools for VS 2008 SP1 to your desktop
  2. Create a new sltools directory on your desktop
  3. From a command prompt, run silverlight3_tools.exe /x to extract the files
    NOTE: You can also use a tool like 7-zip to extract the files
  4. Specify the directory you created in step 2
  5. Download and save the Silverlight Developer Runtime to the sltools directory
    NOTE: My problem was that the Sl Dev Runtime is at a blocked URL, so you may have to download it offline and bring it into your environment
  6. Run sltools\SPInstaller.exe to perform the actual installation
  7. Delete the sltools directory

That's it. Not hard, but annoying.

Tim Heuer Syndicated feed has a similar blog post for Silverlight 2, but I wanted to share this because the developer runtime is in a new location. I'm still trying to figure out what the full URL is, so I'll update this if I get a chance to figure that out.

Update: Thanks to the Bob Pomeroy Syndicated feed from the Silverlight team for helping me get the direct URL for the Silverlight 3 developer runtime.

Comparing Virtual Earth and MapPoint Web Service

By Michael Flanakin @ 11:04 AM :: 2517 Views :: Development, Tools/Utilities :: Digg it!

When I need to create a geospatial visualization, Virtual Earth is my default answer. When talking to someone who's been in this space for a while, he mentioned the MapPoint Web Service. I initially assumed this was a legacy offering that Virtual Earth replaced. Apparently not. Tatham Oddie has a very nice high level comparison to at least help you determine which makes the most sense in a given situation.

  Virtual Earth MapPoint Web Service
Map Styles Road, Aerial, Birds eye Over 30 different styles (optimised schemes for night viewing, etc) however no aerial imagery
Integration style JS control (best for embedding in web pages) SOAP web service (usable anywhere)
Interface style Drag and drop positioning, scroll wheel support, interactive pushpins, AJAX based. Roll your own (it returns an image and you have to work out what to do with it).
Pushpin support You create them all yourself on the fly using API calls – any clustering / filtering optimizations have to be done manually. Can upload pushpin sets to their databases and they will handle plotting / clustering and filtering.
Routes Specify a start point and an end point and they’ll give you a route in text. End of story. Specify the waypoints, preferred road styles (back roads, highways, toll roads, non-toll roads) and it will return a machine readable result set.
Cost Free (commercial use has some minor restrictions) Per transaction
SDK documentation and support Basic MSDN docs, active community ( Plenty of MSDN docs and articles, including VS.NET integrated help and plenty of websites (

A Plea for IE

By Michael Flanakin @ 7:28 PM :: 8708 Views :: Technology, Microsoft, Predictions, Tools/Utilities, User Experience :: Digg it!

Internet Explorer

Microsoft is out to prove a point with Windows 7. I can see the message clearly: "See, we can deliver on time; and earlier than most expected. And to top it all off, we did so without drastically changing the OS. That 'polished' OS you're looking at... yeah, it's Vista; 'Vista-point-1' to be exact. Sure, we tweaked it; but that's just to prove another point: Microsoft software isn't about bloat." I could probably go on for a while, but the signs are all there. Sinofsky has done a great job taking the Windows team under his wing. I've been very happy with some of the decisions they've made. As a matter of fact, I'm hoping to see some of the same changes on other fronts. Enter Internet Explorer.

IE8 is a big flop in my book. Don't get me wrong, it's my default browser and I love the enhancements; but it's just hiding the real, underlying problem: the foundation. I apologize for the analogy, but you can only mold a pile of crap so many ways before it just starts falling apart. Arguably, the same can be said about Windows, but Windows 7 has really given it a refresh. It's hard to explain how much better Windows 7 feels. I have to say I'd liken it to the first day I got Windows Vista, to be honest; but the key differentiator there is that I had quality hardware that was up to the challenge and no legacy software or devices to be concerned with. I'm not the "normal" user, of course, and I feel bad for those who had bad experiences. It's not because the software is bad, it's because your circumstances around which you experienced it were wrong. Not that Microsoft isn't to blame, tho; but I'm getting way off topic. It's time for a major change with IE.

I remember seeing some early concepts around IE8. At first glance, I was confused at a few of the ideas -- I'm thinking of one in particular -- but after I paused to really mull it over, it hit me. The power users would have at their fingertips would be astounding. There's a common root to the booming growth of Google and Firefox. This is exactly what Microsoft would've seen with this feature. Guess what: that feature never saw the light of day. As a matter of fact, I don't even know that it made it past that slide deck. Admittedly, the idea was rough, but it had some real potential. What's funny is that I just read something about the same concept being applied to another browser. *sigh*

Before IE8 beta 1 hit the streets, I saw another slide deck about what would be included in IE8 and 9. At first, I was excited, but it didn't take long for that to wear off. I actually began to question some of the decisions. There was (once again) one feature loved, but then I started to wonder if it even made sense. Depending on whether the team takes a left or a right out the gate will be the deciding factor for that feature... if it's still even a possibility. IE8 was pushed back so much that the IE9 time frame and feature set is completely out of the picture for what I saw. It's too bad; I was looking forward to a few quick revs. At the same time, this could be perfect timing.

Windows 7 is on the way, with rumors of April and May release candidates culminating in a June, July, August, September, October, November, or January final release date. It's pretty clear nobody has a good clue of the actual release date, but there is one constant in all the confusion: simplicity and performance are the two driving tenets in Windows 7. These two factors are huge for usability and, furthermore, perceptions. So, when I think about what to expect in IE9, I'm looking for both of these: simplicity and speed. IE8 is a dog on some machines. We've seen JavaScript benchmarks and "everyday use" benchmarks that all tell us different things, but it all comes down to our individual experiences... and perceptions. For IE to be a contendor, it needs to clean up its act. I want a sleek, sexy browser. It's not Firefox; it's not Chrome; and it sure as hell isn't Safari or Opera. I'm not saying each isn't functional, I'm just saying there's a lot to be desired.

Opera's doing it's thing, although I'm not sure why it even bothers; Apple's giving Safari on Windows a go, but not doing well; Google's got juice, but I don't think they have the right talent-mix to succeed; and Firefox is leading the pack against IE, but hasn't really made any significant innovations and is growing more by perception than anything. Microsoft (read: IE team), the browser market is yours to lose [which you're doing]; but it's also yours to dominate. Take a step back. Review the history books. There is one constant in what drives the up-and-comers of today. See that and feed into it. The world is asking for simplicity, speed, and all-around usability. IE8 isn't the answer. IE9 could be. You can do better. I know it; you know it.

Visual Studio 2010 Will Make You More Productive

By Michael Flanakin @ 7:41 AM :: 3592 Views :: .NET, Development, Tools/Utilities :: Digg it!

Visual Studio

Whether you've heard about Visual Studio 2010 and .NET 4.0 or not, you should really be watching the 10-4 show on Channel 9 Syndicated feed. As you have probably guessed, the show talks about what to expect in Visual Studio 2010 (version 10.0) and .NET 4.0. The episodes I've seen cover things like ASP.NET, AJAX, parallelization, and overall enhancements to the VS IDE. Admittedly, I'm behind a few episodes, but that's just par for the course While each of these has been valuable on its own, I have to specifically call out episode 5, Code Focused in Visual Studio 2010. This episode talks about three things: code navigation, test-driven development (TDD), and extending the VS editor.

These first two areas, code navigation and TDD enhancements, are taking a page from the Resharper bible. If you haven't used Resharper, yet, you're seriously missing out. Resharper is the one VS add-in I can't live without -- GhostDoc isn't too far behind, tho. The first thing we're getting is the ability to highlight all references of an variable. This doesn't sound all that exciting, but it's really nice to see without having to look, if that makes sense. To top it off, you can bounce between these references with simple keyboard shortcuts.

Bouncing between variable instances is neat, but let's take it up a notch. If you're digging into new code, figuring everything out can be a true feat. To help us move down this path, VS10 is giving us the ability to view the hierarchy of calls related to a specific method/property. The call hierarchy tells you everthing that calls your code block and what your code block calls. This is going to make understanding code a lot easier. We're still short of my desired end-goal of having an automatic sequence diagram generated, but at least we're making steps in that direction.

From a productivity perspective, one thing I love about Resharper is that, if I need to open a file, I don't need to know where it is, I simply need to know its name. VS10 is bringing this to everyone. A simple shortcut, like Ctrl+T, and a dialog pops up, waiting for you to type in the file name. You can type a partial name, mycla to get MyClass.cs, or use the Pascal-casing and type MC to get MyClass.cs or MyComponent.cs. Pay attention to how much time you spend in the solution explorer. Imagine cutting that in half, if not more.

The TDD-based enhancement really isn't about TDD, but it does support TDD very nicely. Basically, the idea is, when you're writing code, you want to dig in to the real logic, not go around creating domain objects and data access layers. To support this, you just start typing. If you need a customer class, you just reference it in code. VS will tell you it doesn't know about that class, but this is where the feature comes into play: it'll give you the option to generate it. The same thing happens when you add properties and methods. VS will generate the stubs for you. This lets you focus on one method at a time, without having to divert focus to figure out how third party code needs to work. This is all about decreasing the noise, in my opinion, which is very hard to do sometimes.

The last thing the episode covers is something most people will probably underappreciate: the new WPF-based editor. Despite what people think, this isn't about flashy graphics. Nobody wants text to fly across the screen as we type it. There are two concepts here: (1) simple animation can go a long way to enhance user experience; and, (2) WinForms is now a legacy technology and WPF provides so many enhancements that it just makes sense to bring this to developers, making it easier to build and extend on the #1 development environment in the world. Everytime I think about this, I fall back on Resharper. Now that it's so easy to do amazing things with the editor, what is the Resharper team going to be able to give us? What is the community going to be able to give us? I can't wait to find out.

ReSharper Nightly Builds: The 4.5 Saga

By Michael Flanakin @ 8:31 AM :: 11259 Views :: .NET, Development, Tools/Utilities :: Digg it!


JetBrains started work on ReSharper 4.5 recently; but, more importantly, they just made nightly builds available online. I've said it before and I'll say it again: this is the best Visual Studio add-in I've seen... and I'm not the only one who thinks so. I'm a huge productivity geek and ReSharper helps feed my addiction to speed... as in quick. JetBrains won't give you drugs. Although, ReSharper may seem like it, when you work on a machine without it. Development without ReSharper is somewhat analogous to drug withdrawals... cold sweats, lots of twitching, and wondering if you'll be able to finish in time. Okay, maybe not, but I do dread life without it.

MSDN Subscription: January 2009

By Michael Flanakin @ 5:21 AM :: 2786 Views :: Tools/Utilities, MSDN Subscriptions :: Digg it!


The following consists of the English DVD updates released under the MSDN Premium (Team Suite) subscription level for January 2009.


  • Disc 4614 / Part X15-28400
    • Microsoft Customer Care Framework 2009 (English)
    • Microsoft Desktop Optimization Pack 2008 R2 (English, Portuguese-Brazil, Chinese-Simplified, Chinese-Traditional, French, German, Italian, Japanese, Korean, Russian, Spanish)


  • Disc 3099.02 / Part X15-28380
    • Hyper-V™ Server 2008 (Chinese-Hong Kong S.A.R., Chinese-Simplified, English, French, German, Italian, Japanese, Korean, Portuguese-Brazil, Russian, Spanish)
    • Microsoft Virtual PC 2007 (English, French, German, Italian, Japanese, Spanish)

For more information, see the MSDN Subscriptions Index.

WPF and Silverlight (XAML) Tooling

By Michael Flanakin @ 7:51 AM :: 4842 Views :: .NET, Tools/Utilities, User Experience :: Digg it!

WPF/Silverlight XAML

If you haven't played with either WPF or Silverlight, you first need to understand the tooling we have available: Visual Studio, Blend, and Design. Most people don't consider Expression Design, but I'd argue that it's perhaps the best way to get started, depending on what you're doing. This is probably common sense, but if you haven't played with each of the tools, you may not realize how valuable each is to your end goal.

Any developer will most likely want to start with Visual Studio. Try it. You'll find yourself wondering where to start. If you're an old school web developer, like me, you'll stare at the XML code and wonder what to type and finally fall back on the toolbox. If you're a drag-and-drop type (either Win or Web Forms), you'll probably go directly to the toolbox. In either case, you'll most likely find it useful to tweak both the designer and XML... well, that's not completely true. If you're comfortable with XML, you'll eventually stop using the designer because it's just too much of a pain to deal with in Visual Studio. Visual Studio is the best environment [today] if you want to modify markup or code. Don't choose Visual Studio if you're a drag-and-drop type of developer. No matter what type of developer you are, however, you'll find yourself wondering if there's a better way because it just doesn't "feel" right. This is when you'll begin to wonder about that "Blend" thing you heard about.

If you're proficient in Flash development or claim the "designer" moniker, you'll probably start with Expression Blend. Blend is the best tool to build an interface along with some key interaction details (read: animations).  The problem with blend is, there's absolutely no intellisense in XAML, which I find ridiculous. And, just to put salt in the wound, you can't even edit code (C# and VB) files with the tool. This really drives in the fact that the tool is intended for no-code applications. These don't exist. In my experience, Blend will become less and less useful over time. Why? Because you'll start to realize you can't do everything in XAML and will have to move some things to code. This, in conjunction to run-time bindings in XAML will render the Blend design-time experience useless. Visual Studio is the same in this aspect, but it just because apparent that you'll prefer the intellisense, since you'll want to work with the XAML. Unlike Visual Studio, tho, you'll find yourself tweaking the designer more than the XAML. Coding isn't the only thing that will take you out of Blend, tho.

Let's face it, most people start looking at WPF and Silverlight because they want glam. They want beautiful applications with all kinds of frou-frou animations and transitions. This drives me crazy, but I'm not surprised. Choose WPF and/or Silverlight not because it can be pretty, but because it's the next generation user interface technology. This means, if you're building a new Windows application, don't even look at Win Forms. WPF is the way to go. Microsoft hasn't said it, but Win Forms is dead to me. If you have an existing app, I'd recommend you start looking into interop scenarios. Whether you're looking at WPF and/or Silverlight as the next gen platform or not, you're still going to want that glam I mentioned. This is when you should take a look at the often ignored, red-headed step-child of the Expression suite.

Today, Expression Design is a vector graphics editor. Don't expect to switch to Design for raster images (i.e. GIF, JPG, PNG) -- which is what I was hoping to do -- you'll find yourself missing crucial capabilities. I keep Paint.NET on hand for these needs. Design is best used to build creative visual interfaces. I've used it to theorize and bring certain design elements to life. You might do this with windows, buttons, and other framing elements, for instance. I simply find Design to be a better interface for adding glam to my user interface. Note that I'm not referring to animations. Use Blend for animation; use Design for static visual elements, like rotation, embossing, and the like.

To sum it all up, here's what I believe a WPF/Silverlight project should looked like.

  1. Know the difference between graphic and interaction design. Essentially this is the user interface vs. user experience debate, it's important to know the difference for staffing purposes. There is a difference and it's substantial. Don't assume that a graphic designer can architect an ideal interaction or vice-versa.
  2. Get a graphic designer. Unless you have an eye for graphic design, you won't be getting the eye candy you're probably looking for. If you have a passion for this, but it isn't your calling (like me), you might be able to get there eventually, but your time is probably better spent elsewhere.
  3. Get an interaction designer. The fact that we have dialog after dialog and click after click proves how important this one is. I'd argue this is more important than a graphic designer, but I might be biased. The good news is, this can be learned a lot easier than the artistic nature of graphic design. Don't think you can get there without dedication, tho. There are some scientific guidelines, but I have yet to see a good roadmap. It's more about opening your mind and removing yourself and what you might do from the process.
  4. Design is the graphic designer's scratch pad. Whether you start with wire-frames or set your sights on the real deal, Design is great for slapping something together that will eventually be useful. Tweak and tweak and tweak until you get something that looks right. Then, export to XAML.
  5. Blend brings your design to life. Now that you have your XAML, you'll probably need to tweak it to make it slightly more human-readable and maintainable as well as do some initial bindings and animations. This is where three worlds collide. Graphic designers will feel awkward in Blend, but will still be able to be relatively production; interaction designers don't really have a tool, so it will depend on where they came from, but Blend is arguably the best place for them to get started; and, developers are typically more code-focused, so Blend will be awkward for them, too. The bottom line is, Blend isn't the perfect tool for anyone, but it does fill a need. Use it to add interactivity to your design.
  6. Visual Studio gets the job done. When you're ready to make your app do something real, open it in Visual Studio. Arguably the worlds best development environment -- although not without its flaws -- you know why you're here. 'Nuff said.

As a developer who is very comfortable with markup, I've found that this has changed for me over time. I still believe it's a great workflow that supports some moderate back-and-forth -- at least, between Visual Studio and Blend -- but my habits have changed over time. As I've become more and more familiar with XAML, I tend to create visual and interactive effects in Design and Blend, respectively, and then just look at the XAML to figure out how it's done. Occasionally, I'll open my app in Blend, but not too often. This just depends on how big of an effect I'm trying to implement.

The bottom line is, get some experience in all three of these tools. You'll find your own comfort zone. It may include the all-too-bloated and usability-hating Photoshop with a XAML exporter instead of Design or augmenting XAML editing with a light-weight tool like XamlPadX or Kaxaml. No matter what you grow into, know there will be growing pains. WPF and Silverlight have a huge learning curve, but you're buying into the future. The curve is there for a reason, but will hopefully be lessened as the tools improve. I'm also hoping for some major improvements in .NET 4, but I'll try to touch on that later.