November 2006 - Posts

Ramblings on Windows Presentation Foundation (WPF), WPF/E and the Direction of Microsoft
25 November 06 07:40 AM | mrdecav | with no comments

Reading through the WPF architecture documents on MSDN and MSDN blogs turned up some interesting hints about the overall direction of WPF and Microsoft.

As the web matures and bandwidth increases, it is becoming ever more apparent that "mainframe" computing is back in style.  Currently, Google takes the lead (however sour it is) in this department of computing.  Using HTML as a delivery method for their applications and a huge server farm as their mainframe, Google has found a way to deliver rudamentrary software to consumers in a thin-client design.

Microsoft is clearly the runner up in this situation, and has a genuine interest in ensuring that the market for Windows clients doesn't disappear.  This being said, Microsoft, too is embracing thin-clients, just as they did with their original DHTML/ActiveX push.

HTML, as few would argue, is a horrible delivery method for applications.  While it has proven effective for rendering content (such as articles), higher DPI monitors and more demanding graphical needs make HTML a very weak platform for GUI development.

Enter WPF.  WPF seems here to change the ballgame.  Not only does WPF have a significant advantage over HTML in terms of high DPI layout (see The New York Times Times Reader as an example), but it also allows for rich and responsive UIs to be created, as you get in a rich client.

The most interesting aspect of WPF is its core architecture.  While currently marketed as a replacement for the aging Winforms/GDI stack in Windows rich client applications, WPF is much more.  The most significant (and often overlooked) feature of WPF is its remoting capabilities.  For those who have tried using Flip3D in Vista over RDP, you will know what I'm referring to.  WPF is a two tier system, composed of the application and the renderer (also known as milcore).  In WPF, the application tier builds a "visual tree" of all the elements to be rendered and sends them to milcore through a messaging protocol.  milcore then caches this tree, parses it, and renders it.  Changes to the GUI are then sent as deltas to this tree.


(Image from MSDN)

So what does this mean for WPF?  It means this tree does not have to be serialized down to an milcore executing on the local machine.  In fact, version 1.0 already supports remoting of the messages to milcore over a network (ex. RDP and Flip3D).

For us (consumers and developers), this means we may finally see the mess that is HTML come to an end, replaced by a rich and more powerful rendering system.

For Microsoft, this is a major change.  It opens the possibility that Microsoft wants to own the next HTML, and WPF/E (which is WPF running on Mac) is their road there.  If Microsoft can get WPF installed on every machine, then Windows Server (running the application and serializing WPF/milcore messages) will be the only server capable of serving up these rich applications.  If this is truely their direction (right now its only my speculation), it could mean that Microsoft has the potential to hit Google and others where it hurts:  the rich internet application business, where Google will have no competing technology to confront WPF.

One things for sure, as the battle for the web heats up, WPF will become more of a major player -- and an interesting one it will be.

Sources/References

http://msdn2.microsoft.com/en-us/library/ms750441.aspx -- WPF Architecture on MSDN

http://blogs.msdn.com/greg_schechter/archive/2006/06/09/623566.aspx -- WDM and WPF Concepts by Greg Schechter

Running Zune on Vista!
17 November 06 05:56 AM | mrdecav | 36 comment(s)

UPDATE: I've seen alot of people searching for how to run Zune on Vista, long after Vista was released.  You can run Zune on Vista, and if you're having trouble, go download the latest player software at http://www.zune.net

So it is possible!  Zune can run and sync on Vista.  There are some minor quirks (mostly graphical), but it works.

After hacking up the MSI (editing the MSI tables and what not) and doing some other tuning, I've gotten my brand new brown Zune to sync with the Zune Marketplace on Vista RC1.  Right on!

Sure enough, while Microsoft may be worried about stablity, Zune DOES work with Vista

 

 

 

 

Quick disclaimer:  I'm not responsible for you screwing your system up.  Also, please note that I already plugged my Zune into a Windows XP machine and had the firmware update to 1.1.  While I anticipate you can do this on Vista, I HAVE NOT tested this scenario.  Firmware updates are fragile, so don't screw around with it if you don't know what you're doing.  You may have a nice brown paperweight.

  • Download and run orca.exe (this is a disassembler for MSI that is supplied by Microsoft).  Orca is part of the Windows SDK.
  • Pop the Zune CD in the drive and run d:\packages\zune\zune-x86-enu.msi
  • Search your harddrive for "zune.msi" and copy it somewhere (like to your desktop)
  • Open the package in ORCA and navigate to the "LaunchCondition" table.  Remove the condition row that says that the MSI must be running under ZuneSetup.exe
  • Navigate to the MsiDriverPackages table and remove the driver installation.
  • Save your changes and run the MSI.
  • Try to run Zune from the start menu, you will get an error saying that the OS is not supported.
  • Right click on the shortcut, and set compatibility mode to XP SP2.
  • ***You may have to restart the machine at this point***
  • Run Zune again and plugin your Zune.  The device should be discovered and the Zune should be ready for sync.
  • If Windows doesn't auto-install the Zune, you will find the INF in "c:\program files\Zune"
More Posts