Swimming with Vista Media Center

Been busy again. Hard to write blogs when you are spending your days and evenings doing the stuff that pays the bills.

Been busy again. Hard to write blogs when you are spending your days and evenings doing the stuff that pays the bills. I did notice that I now have a very big head hovering over my blogs. Yes, I saw the photo before I submitted it, but I guess the background changes which make it fit the color scheme of ZDNet causes my head to look like it could be used to break into burning buildings (something I do regularly, but it's not supposed to look that way).

Anyway, I've been diving a bit deeper into the Microsoft technology pool of late. I have a bunch of spare computers lying around, and decided I wanted to turn one of them into a Media Center server. So, I burned a copy of Windows Vista by downloading it from MSDN, activated it with an "Ultimate" key (the one that has Media Center enabled) installed a tuner card and new graphics card, and discovered that the cards were too tall for the computer I was upgrading.

D'oh. My original plan was to put the PC on top of my entertainment center, but until I buy a new case for the PC, it was going to have to be this ugly beast with wires hanging out of it that would likely bake wandering cats in a flash, if I had any. That's when I remembered that an XBOX 360 has a Media Center Extender built-in to the game console.

So, I disconnected the cable wire from my TV, connected it to my scary-looking open-to-the-air Media Center (which is now safely squirreled away on a desk elsewhere in the home), and tried to access my Media Center by entering the Media Center section of the XBOX system screens. It detected the presence of the Media Center PC and generated a unique code that Mr. XBOX instructed me to enter somehow on the PC side. So I entered Media Center (which is an icon on the program list that replaces the Windows "Start" button), and it suddenly detected that there was a new extender device on the network. It prompted me to enter my access code, and presto, the Extender device was registered to work with my Media Center.

I was then able to access television services through my XBOX 360 even though no cable wire was connected to my TV set. Essentially, my media center was acting as a streaming media hub in the home, which probably shouldn't surprise me as that's how it is marketed, but I hadn't seen it doing this, so I thought it was pretty interesting. Since Media Center is a Microsoft product, it also integrates well with the standard rip locations for CDs on the local PC (you can set up various locations that it "listens to" for Media). I ripped a few CDs to my Media Center server, and quickly decided that I wanted to have ALL my CDs available that way because it was a much better way to choose an album to listen to. Unfortunately, I have a LOT of CDs so that will have to be a work in progress.

Media Center did re-ignite an interest in the Zune, because of wording in some of the screens related to Media Sharing in an XBOX that indicated that it was compatible media source (and since I'm likely to rip all my CDs for use through Media Center, anyway). Hate to say "I told you so" to those who doubted that Zune WiFi connection would be useful for more than just Zune to Zune exchange of music, but I can leave my Zune lying on a side table in my bedroom and stream music from it through my TV set...wirelessly. A colleague who has owned four iPods and now owns a Zune will let me try his out when I visit Mountain View this week (flying up today), so I may have to visit the company store to get one.

I quickly found ways I'd like to upgrade my Media Center. I only bought one tuner card because this was an experiment, not a long-term commitment to the Media Center lifestyle (though that has changed). However, if you only have one tuner card, you can't record one channel while you're watching another. Further, if I wanted to add another TV to my home (say, by using a cheap dedicated Media Center Extender device), I would need a second tuner, unless I wanted all TVs to watch the same channel simultaneously. Obviously, the rule here is, the more TVs in the home you have, the more tuner cards you need.

Also, the smallish hard drive on my spare PC is quickly going to get filled with recorded video. I need to buy something larger, and given how cheap large drives are these days, there's no reason I shouldn't.

That, however, is one of the more interesting things about Media Center. It's like a geek version of a TiVo device, something you can customize to your heart's content. I've already downloaded a few Media Center plugins, and I have plans to write a few of my own using using XAML / WPF (the same technology which underlies the new UI architecture in .NET 3.0 and Vista, and is the foundation of the subset found in the newly released Flash competitor WPFe) or MCML (the native Media Center development technology that also has a UI laid out in XML). I could write them in HTML / Javascript, but I'm starting to find HTML / Javascript a bit dated, possibly because I've been writing it since 1996.

On that note, I also found areas I'd like Media Center to improve. One thing I liked about the XBOX's ability to play shared media (a function parallel to accessing media through Media Center) was the visualizations you get on your TV screen. Media played through Media Center directly on a PC has visualizations, but when played through the Media Center Extender on an XBOX, lacks them. In other words, if I were to return to my original plan and hook Media Center directly to my TV, I would get all the visualizations I can handle.

The difference when playing through an extender is likely that the visualization code can't be "extended" to a remote device so easily, particularly if they are written in native code. You can't take snapshots of a fast-moving visualization and hope that customers will be happy with that. It really needs to be something that runs locally (as MCML code apparently is).

Media Center Extender devices do some local processing with MCML plugins (according to my sources), but not so with XAML/WPF plugins. XAML/WPF plugins require a .NET runtime to "remote" properly, something that probably doesn't exist in a Media Center Extender device. If they did update extenders to include a .NET runtime, however, provided visualizations were written in .NET, both XAML/WPF plugins and visualizations could be served up to the extenders to be run remotely. That applies to other advanced bits of logic (e.g. support libraries), and that's when things start to get interesting.

Just a thought, and for all I know, the Media Center team is already thinking along those lines.