September 25, 2006

Windows Vista Media Center? Not yet.

Filed under: Uncategorized — Anthony Park @ 6:58 pm

I really want to start using the new version of Windows Vista Media Center. In my house, MCE is king. I have a Sony Vaio Media Center PC sitting next to my Toshiba 52″ DLP in my living room. My wife (not computer savvy) finds the interface easy to use and loves the convenience of the whole thing. My kids are blissfully living in a world of recorded TV and digital lossless music. They may never know what it is like to not have 10 episodes of “JoJo’s Circus” at their fingertips. For these reasons, I need to be sure that whatever changes I make to the Media Center PC do not affect the quality of service that my family is accustomed to.

So, I decided to install the new operating system as a dual boot: Windows MCE 2005 and Windows Vista Ultimate RC 1. I bought an external 250Gb SATA drive and enclosure (hooked up via eSATA), and installed Windows Vista on that drive. I should mention that this is the THIRD time I have tried to make the switch to Vista. The first two times (Beta 1 and Beta 2) didn’t work out either.

Here are some things I liked:

1. Ease of installation. Wow, I think this is the easiest and nicest install of a Microsoft OS that I have ever seen. It asked me all of the questions up front in a nice GUI (no more blue screen junk) and performed an almost unattended install of the OS. When it was finished, EVERYTHING had drivers installed. In previous versions I tried (Beta 2), everything would install except my network and my tuners; they fixed it. In under two hours, the OS was installed and every driver was installed and working. Nice.

2. Mini-guide. This is pretty minor, but the new MCE comes with a mini-guide which allows you to see the title and short description of what is playing on other channels without pulling up the entire guide. This is a nice addition because most PC tuner cards are VERY slow to change channels. My digital cable box had this feature five years ago, and I forgot how much I missed it. I might even watch more live TV because of this thing.

3. New “Play Slide Show” button while playing music. This is pretty minor, too. One of the common things that my family does with Media Center is queue up a music playlist and then play a slideshow of our family pictures. This is great for parties and entertaining, and my kids love to watch the slideshow and yell out who they see in the pictures. The new version of Media Center has a button in the My Music area that lets you start a slideshow. This was a nice touch that makes my usage a couple of remote-control-clicks easier.

4. New User Interface. I like the new interface in Media Center. When I first saw screenshots on the web, I was disgusted with the new design. However, after seeing it on my own display and moving around within the interface, I think it is very nice.

Here are some things I did not like:

1. Performance. I understand that it is a new operating system and it is probably expected to be run on machines that don’t exist yet. I still thought that since I only use this PC for Media Center, that the performance requirements of the OS wouldn’t affect me too much. WRONG! Here are the specs on my machine:

Processor - Hyperthreaded 3.2 P4 Processor w/ 800MHz FSB
Memory - 1GB PC-3200 400MHz DDR
Graphics - ATI Radeon X300 w/ 128MB Video Memory

My machine has been given a “3″ for the performance rating, and it was obvious that this performance rating might be the root of many of the problems with my experience. That’s why I am mentioning it first. I guess I have some upgrading to do…

2. No animation in Media Center. Okay, so this is a really minor thing… Did you ever notice in MCE2005 that the background moves? It’s gone in Vista. Maybe they will bring it back in a later build, but I noticed the lack of animation immediately.

3. Choppiness during HD playback. This goes back to performance, I’m sure. While just watching an HD channel, the display of the video was choppy. In MCE 2005, HD content displayed just like it would if I hooked my TV up to an HD source, which was great. With Vista Media Center, the choppiness was almost as if I was watching a streaming video over the internet.

4. Display problems. This was the deal-killer for me. My Media Center PC is connected to my 52″ DLP display. I always leave MCE running and simply turn off the TV and my amplifier when I am finished using it. This has always worked fine w/ MCE 2005, but no longer works w/ Vista. When I turn the display back on, the picture never comes in; it is just a black screen. I figured out that if I press Alt-F4 on the keyboard, this will close Media Center and my picture comes in displaying my desktop. I can then restart Media Center and everything is fine. Since I don’t usually keep a keyboard handy, this is not an adequate workaround and this problem is enough to make me abandon the whole thing.

5. Sound problems. I think this is a problem with RealTek sound card that I have in my machine. I cannot get a “secondary lock” on my digital optical connection. This usually means there is more than a 5Hz variance in the transport’s internal clock. Whatever the problem with the driver is, it is causing poor, choppy sound quality through my digital optical connection.

6. Sharing problems. I normally perform nightly backups of the media stored on my Media Center PC to a large network storage device. With MCE 2005, this meant setting up an open share on the MCE box so that I could pull the media over the network using an automated backup process. I wanted to set up the same open share with Vista so that I could push the media from my backup device to the Media Center. Sounds simple, right? HA! After over an hour of messing with it, I finally gave up. I was able to share the Users\Public directory as an open share, but I couldn’t get write access to the share from my other machine. I tried setting permissions on the share, setting security on the folder, etc. but to no avail. I’d be willing to invest some more time into this one if it weren’t for the display problems…

7. Extender problems. I run the Xbox360 extender in my bedroom, which is awesome. The extender setup has improved in a lot of ways. It was much simpler and faster to get the extender up and running. My Xbox360 didn’t have the latest dashboard update, so it ran into a minor glitch during the setup, but recovered flawlessly. However, I can’t seem to get any music to show up on the extender. Selecting “Add Music” allows me to browse for a folder to add music from. When I browse to my music folder, the folder is already checked and there is nothing I can do to make it “reload” the music from that folder. Also, some of the screens in Media Center do not fit nicely on my TV that is attached to the extender. I am using a 32″ CRT TV which is attached to the extender via s-video. I know that part of the reason the UI in Vista Media Center was redesigned was to take advantage of the wide screens, but I thought my 4:3 display would still be supported??

I’ve mentioned several things that I did not like about Windows Vista, but here is the worst part. I’d be more than happy to submit these problems using some kind of feedback application that raped my computer for hardware/software specs and sent them off to the powers that be. I COULDN’T FIGURE OUT HOW TO DO THIS!! Come on, Microsoft, with a Release Candidate or Beta version there should be an icon on the desktop for this use case. I’ve since learned that there is a web-based tool that allows users to do this, but I’ve already lost interest.

Overall, I think that Microsoft is on the right track with Windows Vista, but it’s just not ready for me to switch.

September 21, 2006

Re: social networks, ownership and consistency

Filed under: Uncategorized — Anthony Park @ 12:54 pm

Tim Heuer posted some interesting comments about social networks, ownership and consistency. Tim’s wife currently runs several Yahoo! groups for the benefit of their neighborhood. The question being discussed is whether or not the groups should be moderated. On a personal note, I think some of the things his family is doing with creating a “local” social network are very interesting. My wife and I are looking to see if anything like this exists in our neighborhood. If not, we will probably start doing similar things.

I’m by no means an expert on social networks, but I thought that I could categorize the types of ownership that I have observed into four groups:

Positive Democracy


- Positive democracy is the idea that the consumers of the content will vote for “good” content, and the system is designed to present “good” content to other consumers as a priority. Some sites that come to mind immediately are digg, reddit, youtube, etc. This design tends to work well with large amounts of content, in which the general population would normally be interested in the “best” of that content.

Negative Democracy


- Negative democracy is the idea that the consumers of the content will reject “bad” content. If enough “bad” votes are given for a piece of content, that content may be removed or filtered for other consumers. There are alot of websites that implement this system, but some of the ones that come to mind are myspace, hotornot, and craigslist. The general idea behind this model is that consumers are interested in most of the content, but that some of the content is offensive or distasteful to a large number of the consumers. Hotornot, for example, lets consumers flag pictures as “inappropriate”. If too many “inappropriate” votes are cast, the image will be removed.

Perhaps the most interesting thing behind these democratic models is that the nature of the content and usage has the ability to change over time. Shifts like this might mean that the maintainer of the content misunderstood their target market. Take hotornot for example… The obvious content that hotornot is trying to prevent is pornography. But, what if the primary users of hotornot enjoy pornography and use the democratic system against the website? What if the majority classifies clean pictures as porn and porn pictures as clean? The maintainer has the option to rebrand the website as “goodpornornot” and enjoy their newly-found market. Perhaps there are two clusters of interested consumers? Ones that want to vote on porn, and ones that want to vote on clean pictures? If this is the case, the content could be divided to better serve these two cluster markets.

Moderation


- Moderation is the idea that the maintainer of the content knows what is best for their consumers, and they moderate the content accordingly. This makes alot of sense when the publishing entity wants to maintain some kind of brand image. A perfect example of this is download.com. Every file submission to download.com is thoroughly reviewed for accuracy, scanned for viruses, etc. They probably employ hundreds of people just to perform this analysis. This is because it is in their “best interest” to do so, and they have some control of their brand image.

Ignorance


- This is a category that should not be ignored :). This means that the maintainers of the content are intentionally ignoring the content and not attempting to classify any of it. An example of this model that comes to mind is the bittorrent protocol. Designed to “distribute large amounts of data widely”, the authors may not have intended for the protocol to be used for distibution of copyrighted material. Although there are things that could probably be done to prevent this from happening, the protocol is intentionally ignorant to classifications like these. This is similar to the democratic models in that the largest cluster of users will probably prevail.


So, back to the question at hand… Which of these models should a social network designed for a local community implement? My vote is for the Negative Democracy model. I would bet that if this model were implemented, Tim’s wife would find that most people simply ignore the $12 costumes and the Tonka trucks.

September 4, 2006

Creating a Media Center AddIn: Soup to Nuts

Filed under: Uncategorized — Anthony Park @ 4:18 pm

I recently posted instructions for creating a Media Center Hosted HTML Application Setup Project for Windows Vista


I am currently working on a new AddIn for Media Center, so I thought I would post the same instructions with respect to AddIns. Setup projects are a little different for AddIns than they are for Hosted HTML Applications.

Instead of describing just the setup project, I decided to post instructions for creating a Media Center AddIn “soup to nuts” (start to finish).

This guide assumes a couple of things:

1. You have Visual Studio 2003 installed and working
2. You have installed the Windows XP Media Center SDK

Step 1: Create the AddIn


- Open Visual Studio
- Select File | New | Project
- Select “Visual Studio C# Projects” | Media Center Edition Add-In
- Type in a location, and a name for the project.



After you click OK, Visual Studio will create a project for you with a Class1.cs file in it. This class implements two interfaces: IAddInModule and IAddInEntryPoint.

- In the Solution Explorer, rename the Class1.cs file to something appropriate. In our case, MCEHelloWorld_AddIn.cs.



- Inside Class1.cs, rename the class name, and set the namespace to something meaningful.



- The IAddInEntryPoint has a single method called “Launch”. In the Launch method, let’s add code to pop up a simple dialog.



- Now that we have our code in place, build the solution.

Step 2: Secure our Assembly


Media Center will only run AddIns that have been signed. So, we need to create a secure assembly.

The first step is to generate a keypair. If you already have a keypair that you use for other projects, you can just use that one. If not, it’s easy to create one with the “Strong Name Utility” that comes with Visual Studio.

- Open the Visual Studio Command Prompt by selecting it from the Start menu (in my case: Start | All Programs | Microsoft Visual Studio .NET 2003 | Visual Studio .NET Tools | Visual Studio .NET 2003 Command Prompt)

- Change to your project folder (in my case c:\MediaCenter\MCEHelloWorld_AddIn
- Generate a public/private keypair by typing: sn –k MCEHelloWorld_AddIn.snk



The Strong Name Utility generates a filed called “MCEHelloWorld_AddIn.snk”, which contains our public/private keypair.

Next, we need to add our keypair to the project.

- In Visual Studio, open the AssemblyInfo.cs file that is in the Solution Explorer.
- Change the AssemblyTitle to MCEHelloWorld_AddIn
- Change the AssemblyVersion to 1.0.0.1
- Change the AssemblyKeyFile to “..\\..\\MCEHelloWorld_AddIn.snk”



- Now that the keypair is hooked up, build the project again.

Step 3: Build Setup Project


Now that we have an awesome AddIn that we want to run inside of Media Center, we need a Setup project to install the assembly in the Global Assembly Cache (GAC) and register it with Media Center.

Step 3A: Create a new setup project


- Right-click on your Solution in the Solution Explorer, and select Add | New Project
- Choose “Setup and Deployment Projects” | Setup Project
- Type in a location and a name for the project.



When you click OK, Visual Studio will create a new setup project within your existing Solution.

Step 3B: Setup Project Settings


- In the Solution Explorer, select the Setup project.
- In the properties window, fill in the relevant project properties. In my case, I filled in Author, Manufacturer, ProductName, Title, and Version.



Step 3C: Add Files


- Click on the “File System Editor” toolbar button in the Solution Explorer to open the File System Editor
- Right-click “File System on Target Machine”, select “Add Special Folder” | “Global Assembly Cache Folder”



- Right-click on “Global Assembly Cache Folder”, select Add | Project Output
- Select Project: MCEHelloWorld_AddIn
- Select Primary Output



Step 3D: Check for .NET Runtime Correctly


At this point, we have a setup project that installs our AddIn assembly into the GAC. Visual Studio has detected that our setup project is dependent on the .NET Framework, so it has included a Launch Condition for us to make sure the Framework is installed. Since we are using Visual Studio 2003, the Launch Condition checks for version 1.1.4322 of the .NET Framework. It is important to support multiple versions of the .NET Framework if you want your AddIn to install on newer versions of Media Center (Windows Vista, for example). Thanks to instructions provided by Aaron Stebner in a recent blog post, you can do this easily:

- In the Solution Explorer, click the “Launch Conditions Editor” toolbar button to open the Launch Conditions Editor

- Click on the “.NET Framework” Launch Condition, and modify the “SupportedRuntimes” property to “1.1.4322;2.0.50727″ in the Property editor.



Step 4: Add Media Center Launch Condition


One of the requirements of any good setup project is that it will prevent the user from installing on a non-supported operating system. We can accomplish this task by using a launch condition.

- In the Solution Explorer, click the “Launch Conditions Editor” toolbar button to open the Launch Conditions Editor.

- Right-click on the “Search Target Machine” folder and select “Add Registry Search”.
- Name the new item something meaningful, like “Windows Media Center Required”.
- In the properties window, set the Property, RegKey, Root, and Value properties. According to Aaron Stebner, this is the correct way to check for the existence of Media Center in a setup project.



- Right-click on the “Launch Conditions” folder, and select “Add Launch Condition”.
- Name the new item something meaningful, like “Windows Media Center Required”.
- In the properties window, set the Condition, and Message properties. An Ident of “3.0″ is for Media Center 2005.





Step 5: Register your Application with Media Center


Okay, before we can complete this step, we need to generate two guids for our application. Luckily, Visual Studio has a “Create GUID” tool that will do the job.

- Select Tools | Create GUID from the Visual Studio menu.
- Select the “Registry Format” in the tool, and copy your new guid to the clipboard using the Copy button.



Okay, I said we needed two guids, right? The SDK recommends that you use sequential GUIDs to register your application to make troubleshooting and locating them in the registry easier. We’ll call our two GUIDs the “Application GUID” and the “Entry Point GUID”.

- Application GUID: {05A54682-A6B6-4dff-88BB-7A02C653DF35}
- Entry Point GUID: {05A54682-A6B6-4dff-88BB-7A02C653DF36}

Now that we have our two GUIDs, we’re ready to create the registry keys we need…

- In the Solution Explorer, click the “Registry Editor” toolbar button to open the Registry Editor.
- Right-click on the “User/Machine Hive” folder in the Registry Editor and select “New Key”. Create a structure that looks like this:



Notice how we use our “Application GUID” under the “Applications” key, and our “Entry Point GUID” under the “Background” and “Entry Points” keys?

- On each of the GUID keys, change the “DeleteAtUninstall” property to true. This will unregister the application when it is uninstalled.

- Under the Applications\[GUID] folder, create two string values called “CompanyName” and “Title”.



Under the Categories\Background\[GUID] folder, create a string value called “AppId” and a DWORD value called “TimeStamp”. Put the Application GUID in the Value property of the AppId, and put your favorite timestamp in the Value property of the TimeStamp.



- Under the Entry Points\[GUID] folder, create string values called “AddIn”, “AppId”, “Description”, “Title”, and a DWORD value called “TimeStamp”.

This is where it gets a little tricky… If you have problems with running your AddIn later, chances are that you made an error in THIS STEP.

The “AddIn” String value contains the information that Media Center needs to launch your AddIn. In my case, the string looks like this:

AnthonyPark.MediaCenter.AddIns.MCEHelloWorld_AddIn, MCEHelloWorld_AddIn, Version=1.0.0.1, Culture=neutral, PublicKeyToken=a6da5e5678fccef9, Custom=null

Notice that I have to provide the PublicKeyToken? Remember the public/private keypair that we generated earlier?

You can get the public key token by executing sn –Tp against your assembly from the Visual Studio 2003 Command Prompt.



- Put the Application GUID in the Value property of the AppId, and put your favorite timestamp in the Value property of the TimeStamp.



Step 6: Install and enjoy your Media Center AddIn!


September 3, 2006

Broadcast Flag

Filed under: Uncategorized — Anthony Park @ 8:55 pm

I’ve heard of this happening to others, but this is the first time it has happened to me.



Luckily, it’s not a show that is very popular in my household anyways. Since I refuse to watch television live anymore, any show that utilizes the broadcast flag to prevent recording will not be watched in my household.

Screw you, ABC.