November 2006 - Posts
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.
.png)
(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
So I picked up a Zune yesterday, curious as to what the hype Microsoft made was all about, and to drown out some "ambient" noise in the office. I chose brown, because, well, I want to be a little more counter culture :-p.
So how is the Zune? Not too bad. I'm not going to say its an iPod killer, or that its a perfect product, but it is attractive, the software and UI are well thought out, and it does a good job of playing music (imagine that).
My first thoughts about the Zune were rather mixed. The device is indeed bigger than an iPod, but for getting out of having to use the crap iTunes software, I'll take the extra tenth of an inch of thickness. The device has a beautiful screen and feels sturdy. It actually has a weight that feels less than that of the iPod (probably because of the plastic case versus metal back).
Installing Zune Marketplace on Vista was a pain (see the previous post), but I got through it. Likewise, the XP install was as smooth as can be, and Zune provides a very nice out of box experience, with some starter tunes and videos to go along with it (so I got some instant gratification walking out of the store). The XP install was syncing with the Zune instantly. Within a few minutes, all my music was copied and I got to start playing.
Zune UI
Having owned an iPod, I have a base of reference on how "the competitor" works. That being said, the iPod scrollwheel and UI is straight forward, but can also get irritating when scrolling long lists. The Zune on the otherhand, veering back towards a simple directional pad, makes navigation much easier. Scrolling is as simple as holding down a button. Most importanly, Microsoft hit the nail on the head with consistency. Zune has features (such as "play all" and "shuffle all" where you expect them to be, and they are consistently placed throughout the UI. This is something Apple's iPod has not been able to achieve.
Zune Device
The Zune device is a bit more disappointing. Although the device is reasonably attractive and fits in the pocket, it is more bulky than the ipod, and does not have the same luxury finish (such as a metal back) as the iPod. Here the Zune loses, unless you are attached to the larger screen for video.
Zune Marketplace
I'm only gonna say one thing here: 79 "Microsoft Points" == 1 song == 99 cents. Why not just pay in money valuations, rather than points? I know they are trying a creatvie marketing trick to make people feel like they're speding less, but come on, do you really expect people to fall for that?
Overall the Zune is a decent device, and does what I need it to do. It will be interesting to see what happens and Microsoft tunes the initial product and hopefully makes it a bit thinner. One this is for sure, with the free new features planned as firmware upgrades, and the aggressive strategy Microsoft is taking towards Zune, it will be interesting to see the competition and creativity heat up at both MS and Apple!
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