I'm a regular follower of the Adobe blog over at http://blogs.adobe.com/ and generally speaking I learn a lot (note I'm a passionate Adobe products user, particularly PhotoShop and Illustrator). Every once in a while they throw rocks towards Microsoft, and it does leave me with a bad taste. Case in point: In 'Why Apollo?' Andrew Shebanow writes...

"I normally don't like to do those "me too" sorts of posts Microsoft folks seem to specialize in, where you just say "look at this great article my coworker wrote". To me, its always seemed like a rather distasteful way to do PageRank/TechMeme manipulation."

As for me, when I link to another Microsoft employee blog it's because I found the information helpful or new. For example, Aaron Stebner recently posted Mailbag: How can I create a loading page for an MCML application? and I linked to it from our team platform blog here.

Why...?

  1. I didn't know Aaron was working on this, and thought it was quite neat, and that others would find it highly useful.
  2. I try to make it a point to aggregate all great technical docs in one place on our Windows Media Center Platform Team blog (makes search easier).
  3. There are bound to be folks who subscribe to our platform team blog but NOT Aarons blog -- they might not see this great resource unless I link.

Furthermore, I don't link to every one of Aarons posts (like this one, or that one or the one over here which is related to Windows Media Center development). For the most part, where and when I link is highly correlated to my opinion of the value of the material. It's not part of some uber conspiracy to manipulate the system. And I don't think most Microsoft bloggers link for the sake of linking.

Andrew, I don't think I would have discovered Why Apollo? or Mike Chambers had you not linked. That's exactly WHY you want to link -- to show your readers who you read, or listen to, or respect -- even if they happen to work for the same company you do.

I don't think it's distateful -- it's actually respectful in most cases.

Besides, you can always unsubscribe if you find the linking to be gratuitous.



Categories: Blog | Comments [3] | # | Posted on Friday, March 30, 2007 7:24:04 PM (GMT Daylight Time, UTC+01:00)   

Update: I'm adding a mini-FAQ at the bottom as the comments and feedback arrives.

As part of the documentation updates for the upcoming revision of our Windows Media Center Software Development Kit I have been writing some topics on how to effectively use the MCML Preview Tool (MCMLPad.exe) during development. Since I've seen a few blog posts and discussion forums on the topic I thought I would preview this documentation for you, and ask for feedback and / or additional areas which need coverage. So, try this on for size...

Editing UI
The MCML Preview Tool is designed to assist in the development of individual pieces of UI and as such is specifically designed to NOT scale the MCML content you view therein when run in standalone mode. When run in Windows Media Center the MCML Preview Tool inherits the proportional scaling applied to all applications which run within Windows Media Center. There are some good reasons for this, among which my favorite is the the authoring and preview cycle when creating pieces of UI. You want to see your UI at full size, especially if working on some very nuanced / small feature of that UI. Because Windows Media Center scales the content proportionally to the window, the visual elements can get quite small when you want to switch quickly between your MCML authoring environment and the MCML Preview Tool. Compare the size of the button in each of the windows to the right of IDE window in this screenshot:

ButtonEditSmall.png

The MCML Preview Tool running in Windows Media Center is on the top and the standalone version is on the bottom (note: you can click on most of the images in this post for a life size view). As you can see, when editing the styling of the UI you want to be working at 100% -- otherwise it's just too small when you are fine tuning.

Evaluating Layout and Behavior
When run standalone, the MCML Preview Tool gives you the ability to see how your layout works and looks given different sizes and aspect ratios. Windows Media Center runs with two main aspect ratios in mind: 16:9 and 4:3. You can always set the monitor to some other resolution (example: 1920x1200 for 16:10) and run Windows Media Center at full screen to get different aspect ratios -- but this is rather tedious to do during development of the UI pieces. By contrast, you can run MCMLPad with a completely arbitrary size. For example, here I am testing the snowflake virtualization sample gallery at a 4:1 aspect ratio:

SnowflakeOriginal.png

As I increase the overall size, the gallery grows to accomodate more rows and columns of data, and I can observe how it handles this scenario (including and Show or Hide animations). This is without having to change the panel which defines the 'gallery' holding the snowflakes in my application, and avoiding recompiling, installing to the GAC and registering in Windows Media Center as I edit. Here is the result -- note the item sizes don't change because there is no proportional scaling -- we simply see more snowflakes:

SnowflakeGrow.png

Page Variables
The MCML Preview Tool has a page concept, but it is distinctly different (and much more simple) than the one provided by Windows Media Center (the PageSession and HistoryOrientedPageSession classes). Granted, a 'page' is really <UI Name=Page> -- but the underlying functionality for what you expect a page to do within the overall platform is provided by Windows Media Center. A good way to think about this: The MCML Preview Tool is designed to work with the visual layer of the platform only. Once you get far enough along to test page behaviors it's time to switch over to testing the pieces / parts of the application with Windows Media Center as the host rather than the MCML Preview Tool. An even better approach is to test the page behavior very early in the application development cycle using wireframe resources. The simple button from MCML Sampler is a great example of UI to use to implement and test the layout and databinding which involves your page variables. Later on you replace Simple Button with the more beautiful, fully realized design.

Testing UI
When run standalone, the MCML Preview Tool allows you the flexibility to create a test harness for your UI. To demonstrate, I have created a simple test harness (download the sample solution here) for a button. Here is a screen shot:

ButtonTestSmall.png

Windows Media Center (top right) has the application (a compiled assembly) running which loads Menu.mcml allowing me to test the functionality of the button -- in this case, it makes a method call to display a Windows Media Center dialog. The standalone MCML Preview Tool window (bottom right) is the result of pressing F5 in Visual Studio which loads Test.mcml, designed to show all the different ways to instantiate the button using it's settable properties (again, the non-scaling is quite desireable here).

Taking this a large step further: Throughout the creation and testing of the Z sample application we used the power of layouts and rules in MCML to provide a mechanism to step through all of the the UI for Z. Here is what it looks like:

ZTestHarness.png

On the right we have each UI which defines an individual page within the Z sample application. You can select these items to load that 'page' (again, it's really a <UI> which, when combined with the HistoryOrientedPageSession becomes a bonified page in the application) into the larger, 4:3 constrained area on the left. This test harness is defined by Default.mcml in the sample code which ships in the SDK if you wish to adapt for use in your own applications.

To gain the Visual Studio F5 test harness functionality with the Z sample solution...

If you haven't previously done so...

    • Launch a command prompt with administrator privileges.
    • Navigate to C:\Program Files\Microsoft SDKs\Windows Media Center\v5.0\Samples\Windows Media Center Presentation Layer Samples\Z\.
    • Run Command.CreateDevEnvironment.cmd.

...otherwise MCMLPad will report an exception and close when you use F5 in Microsoft Visual C# 2005 Express Edition because the Z test harness can't find the data.

Then make the following changes in Microsoft Visual C# 2005 Express Edition:

    • Select Solution 'Z' (2 Projects) in Solution Explorer.
    • Select Project > Set StarUp Projects... from the menu.
    • Select Startup Project in the Solution 'Z' Property Pages.
    • Select the Single Startup Project option.
    • Select 'Z' in the drop down list.
    • Click OK.

Finally, select Debug > Start Debugging or press the F5 key to launch the Z test harness.

Note we set everything up to work this way by default for you in the Visual Studio template which ships with the SDK. Here are the basics of how this works if you want to modify to fit your workflow:

In order to launch MCMLPad from within Microsoft Visual C# 2005 Express Edition you have to manually edit the .csproj file for the solution because the Start Action setting isn't available in the Express SKUs user interface -- but it still works if you add some XML. For the purposes of this example let's take a look at the snippet which provides this functionality from the Z.csproj file:

  <PropertyGroup>
    <UseVSHostingProcess>true</UseVSHostingProcess>
    <StartWorkingDirectory>$(windir)\eHome</StartWorkingDirectory>
    <StartArguments>-load:"resx://Z/Z.Resources/Default" -assemblyredirect:"$(FullyQualifiedOutputPath)" -markupredirect:"resx://Z/Z.Resources/,file://$(MSBuildProjectDirectory)\Markup\,.mcml"</StartArguments>
    <StartAction>Program</StartAction>
    <StartProgram>$(windir)\eHome\McmlPad.exe</StartProgram>
  </PropertyGroup>

Most of these should be self explanatory and I'll break down <StartArguments> for you as it's the most complex but most important (read the Media Center Markup Language Preview Tool SDK topic for more information)

-load:"resx://Z/Z.Resources/Default"

Tells MCMLPad to load the Z assembly and navigate to the resource named Default (which is Default.mcml) contained therein. Default.mcml is never used by the application once installed -- its only purpose is to provide this <UI> test harness.

-assemblyredirect:"$(FullyQualifiedOutputPath)"

Tells MCMLPad to load the assembly from a specific location. When $(FullyQualifiedOutputPath) is evaulated it returns something like this: C:\Program Files\Microsoft SDKs\Windows Media Center\v5.0\Samples\Windows Media Center Presentation Layer Samples\Z\bin\Debug\. Note this won't work if the assembly is registered to the Global Assembly Cache, so be mindful of when you run Command.InstallAndRegister.cmd contained in the sample solution.

-markupredirect:"resx://Z/Z.Resources/,
 file://$(MSBuildProjectDirectory)\Markup\,
 .mcml"

This one is broke up into its three constituent parts on different lines for ease of readability. This tells the MCML Preview Tool to replace instances of 'resx://...' with 'file://...' and append .mcml to the end. This allows you to build the assembly once, load the test harness (Default.mcml) into the tool, make changes to the source MCML and test the results of those changes by refreshing MCMLPad without having to rebuild the assembly -- what I call interactive editing.

Interactive Editing
You can also create a compiled assembly and open MCML files directly in the MCML Preview Tool using the same -load, -assemblyredirect and -markupredirect switches as in the Visual Studio .csproj file. This allows you to edit / tweak UI and avoid recompiling, installing to the GAC and registering in Windows Media Center as noted earlier. You can use the command line for this, or the MCML Preview Tool Launcher power toy. Using this approach you can edit and preview your changes in real time by refreshing the MCML Preview Tool after you make markup changes. For example:

ButtonEditInteractiveSmall.png

In this screenshot we see the power toy defining the proper switches for the MCML Preview Tool, and the launched MCML Preview Tool window with our markup loaded. I've edited the Styles.mcml resource to change the focused button text color to red. I can continue to tweak all of Button.mcml resources (anything referenced with xmlns in the opened markup file, including those downstream) and returning to the MCML Preview Tool and pressing the F5 key to refresh and see my changes without a need to recompile. This allows me to make as many changes as I wish to the UI without committing them to my compiled assembly.

There are also other ways to leverage the power of the MCML Preview Tool -- with a little experimentation :-) -- so dig in...!

Mini-FAQ

How do I get proportional scaling in the MCML Preview Tool?
Use <ScaleLayout MaintainAspectRatio="true" AllowScaleUp="true" AllowScaleDown="true"/> in your test harness. For an example look at Default.mcml in the Z sample application, specifically <UI Name="TestWrapper">.

How can I easily switch between 16:9 and 4:3 aspect ratios?
The MCML Preview Tool defaults to 4:3 aspect ratio. Select the top or bottom window frame, hold down the CTRL key and size the window up or down -- the window will eventually 'snap' to the 16:9 aspect ratio. To reverse, select the right or left window frame, hold down the CTRL key and size the window up or down.

How can I test pieces of UI which are wired up to Windows Media Center APIs?
Generally speaking, you shouldn't (or rather, wouldn't). If the individual <UI> pieces are hard coded like this you probably aren't architecting your application properly -- even in a web / codeless scenario. In a properly architected application you should almost *always* be able to test your individual pieces of <UI> in the MCML Preview Tool without hooking them up to the Windows Media Center API. Follow the example in Button.mcml provided in the sample code for this post. When you run the application in Windows Media Center it loads Menu.mcml which uses the <Command> model item and <Rules> to wire up the functionality (in this case a C# method). When you are designing or testing the visuals for Button.mcml you load Test.mcml in the MCML Preview Tool. Test.mcml contains several <Command> model items but no <Rules> to perform the binding -- therefore the buttons behave visually as they will in the application, but have no functionality.



Categories: Resources | Comments [2] | # | Posted on Saturday, March 24, 2007 12:24:11 AM (GMT Standard Time, UTC+00:00)   

I'll confess I didn't know much about European TV standards until I listened to Ian Dixon interview Rathe Hollingum from our Ireland developer team. According to that show, there are no DVB-S or DVB-S2 tuner cards which record directly from those sources available today. What you *can* do today (which Rathe points out) is to use a DVB-S(2) set top box and infrared control cable. For more information check out http://www.microsoft.com/windows/products/winfamily/mediacenter/tvandmovies.mspx and http://www.microsoft.com/windowsxp/mediacenter/using/setup/settop.mspx. There is a lot of good information in the podcast above about support of European TV standards -- give a listen if you are interested in this space.

P.S. Congrats to Ian on 100 shows -- you ROCK!!!



Categories: TV | Windows Media Center | Windows Vista | Comments [12] | # | Posted on Friday, March 23, 2007 5:41:46 AM (GMT Standard Time, UTC+00:00)   

I made a pretty bad mistake the other day with a mailbag post while trying to reach out to the Windows Media Center online community of grass root supporters -- those early adopters who constantly (and rightfully) push us to deliver more value. I took some information which was already public knowledge and connected dots which -- honestly -- weren't there to connect. It was a mistake on my part to infer any sort of timeframe schedule going forward. Doing so set the wrong expectations for my readers and opened up a can of speculation and question worms which were way off base. Above all, I pride myself on being a source you can trust -- and the other day I let you down -- I’ll try not to do that again. [Note to self: Read The Corporate Weblog Manifesto again.]


Categories: Be Smart | Windows Vista | Comments [0] | # | Posted on Wednesday, March 21, 2007 12:48:48 AM (GMT Standard Time, UTC+00:00)   

After reading about his poor experience working with the release candidate of Windows Vista at the last WinHEC I contacted Brier and offered to provide a Windows Media Center PC to take for a spin. Using computers prepped for events like WinHEC are always a dicey proposition -- most of the time they are multi-purpose and have therefore been touched by multiple folks with differing goals (which might not be compatible) before reaching the show floor. Throw in a beta OS and -- well -- you can almost guarantee the outcome isn't going to be very positive. Brier politely declined to take me up on the offer at that time. (Never was sure why, but my best guess was obviated with his article today.)

Brier contacted me last week via email with a note invoking that prior conversation and noting he 'ended up borrowing a TouchSmart from HP and swapped it for my living room TV for a few months' and was preparing an article on his experiences which he published today. I'll admit I literally chuckled out loud when I read his email -- the TouchSmart computer was designed for the kitchen, not the living room, so my initial reaction was 'no good can come from this'. What's a good analogy here...? Perhaps buying some great teak outdoor patio furniture and putting it in your family room is a good one. Needless to say I was interested in hearing about his experiences for better or worse so I responded and we had a great conversation.

Some thoughts after reading his article...

1) It sure would be nice if a journalist would review a Windows Media Center system as our team envisions. Let us hear about your environment, and then help you select a combination of hardware which addresses your needs and wishes. Some might say this would affect the integrity of the writer. I don't think so -- as long as the writer is up front about the assistance he got from Microsoft.

2) It would be great if the major OEMs were more selective of 'value add' software they choose to place on the machine (see Briers follow up posted this afternoon). Unfortunately Briers experience with preinstalled stuff is the norm -- sadly. But for a very few exceptions, whenever I help family and friends purchase a new computer I have it delivered to my house first where I perform a clean install of the operating system to avoid this stuff. Some folks, particularly on our OEM team, might go nuts when they read this, since OEMs are our bread and butter. Wake up -- this stuff degrades the user experience far too much. I know, sounds strange coming from a platform guy -- but this stuff *has* to get better folks -- plain and simple. Build GREAT software on the platform -- or choose NOT to ship the software.

3) My comment to Brier "I would really like for somebody to do a follow-up or a couple of follow-ups — they seem to put these great things out there, but there's not a version 2 or a version 3" was in the context of driving the costs down on great form factors for the living room. We've already got some great boxes designed as dedicated machines for your stereo stack -- but unfortunately the price points remain fairly high on them. It is interesting to note that for $400 less than the cost of the TouchSmart you can have an HP m7790e for the home office with almost exactly the same specs for the internals (processor, memory, etc.) plus an XBox 360 (with built in Media Center Extender) and a brand new high quality wired + wireless router (total for all of that is $1,400 as priced tonight, compared to $1,800 for the TouchSmart). More bang. Less buck.

Oh, and the offer still stands, Brier -- aren't you curious to see how well this stuff works as originally designed? :-)



Categories: Windows Media Center | Windows Vista | Comments [7] | # | Posted on Tuesday, March 20, 2007 6:24:30 AM (GMT Standard Time, UTC+00:00)   

When = Soon, but difficult to say exactly when as each OEM works on finalizing their offerings. The Windows Media Center team is working with each to make sure these make it to market as soon as possible. (Yeah, I know -- this sounds like a total non-answer -- it's really the best information I have at the moment.)

Where = Dell, Sony, Velocity Media, Toshiba and Niveus Media have announced they will be selling CableCard equipped Windows Media Center systems. Take your pick and start monitoring those OEM websites for ordering details.



Categories: Mailbag | Comments [5] | # | Posted on Saturday, March 17, 2007 4:20:26 AM (GMT Standard Time, UTC+00:00)   

Reading this question last night compelled me to make a meeting today where our Windows Media Center MVPs learned more about Windows Home Server from Charlie Kindel and another gentleman from the team (I had to cut out and go to a feature team meeting before I could get his name -- but I'll circle back). I expect those MVPs will be able to give you additional thoughts, but here is a start.

In a nutshell...

Windows Home Server: Helping families with multiple PCs connect their digital experiences, providing a familiar and reliable way to store, access, share and automatically protect what is most important. *

Windows Media Center: Helping families enjoy the digital experiences stored on the PC from the comfort of their couch or in other rooms of the house with an intuitive and easy to use interface. **

In other words, two separate products with goals that are highly complementary to each other. Based on what little I saw today they will each benefit *immediately* once Windows Home Server ships. Longer term, I believe we will see the two product teams collaborating more -- perhaps even creating features unique to the intersection of Windows Media Center + Windows Home Server. After the presentation today I'm definitely going to replace my Windows Server 2003 box here at home with a Windows Home Server and start playing around to find the synergies and goodness.

* This came from an excellent post by Charlie: Why Doesn't Windows Home Server do foo? Go there to learn more about their vision and goals -- it's also a good post on feature development work in general.

** I made this up to kinda, sorta match up with the Windows Home Server mission statement for contrast. It's not 'official' marketing blurb -- but is a pretty good description of the Windows Media Center goal.



Categories: Windows Home Server | Windows Media Center | Comments [4] | # | Posted on Thursday, March 15, 2007 4:54:39 AM (GMT Standard Time, UTC+00:00)   

[Kinda like the way that title rhymes. Anywho...]

I just love the way Ed Bott seems to be able to cut through all the hyperbole and bring some reality to the conversation. As usual, he is able to put the whole Windows Vista adoption rate into perspective. Check out his Slow start for Vista? So what else is new?



Categories: Windows Vista | Comments [2] | # | Posted on Thursday, March 15, 2007 3:50:28 AM (GMT Standard Time, UTC+00:00)   

I promised Ian Dixon a few days ago I would start a new series of posts here at Retrosight for end users of Windows Media Center and since the MVPs are in town getting ready to ask quite a lot of questions I thought I would kick things off a little earlier than he expects. I'm going call these posts 'Mailbag' (modeled after Aaron) and they will be totally community driven.

So...

Leave your question as a comment for this post -- I'll answer one per comment in the order in which they are posted. If you leave more than one question per comment, I'll answer your first one and ignore the rest to give everyone a chance to ask. I'll shoot for one per week, but may be more or less depending on my bandwidth and how involved the questions or answers become.

Update: I just answered the first, and had to gently wordsmith the question a little bit to post in the title. If you post a question and I wordsmith to make things clearer, and you think I changed the question in the process, post a comment on my answer post (not here) and I'll try to clarify.

[You can see this coming...] There will inevitably be some questions I probably won't be able to answer with as much detail as you wish (like 'Can you list out the entire feature set for the next version?') -- but I will make every effort to give you a meaningful answer.

What do you want to know about the Windows Media Center product or team?



Categories: Mailbag | Comments [34] | # | Posted on Wednesday, March 14, 2007 4:17:50 AM (GMT Standard Time, UTC+00:00)   

More stuff from Thomas to chew on in How To Turn Microsoft Around. I'm glad he caveated the post at the beginning and end with the note about armchair quarterbacking. I'm glad to see some folks setting the record straight in the comments over on his blog, so I would encourage you to go read those. Anywho, my two cents about what Thomas wrote follows -- please go read his entire post -- I'm just going to try and boil it down to the action items he recommends in summary.

1) "...create a Microsoft certification whereby thoroughly tested systems receive a special Microsoft seal of approval. This would be reserved only for PCs that met the most rigorous testing requirements."

Done -- see http://www.microsoft.com/whdc/winlogo/hwrequirements.mspx. I expect Thomas' answer will be 'that's broke, you need something better'. My belief: Our ecosystem of partnerships (Chris loves it when I use that particular group think Microsoft-ism) isn't broke, and in many ways is quite healthy.

2) "Microsoft should spend $3 billion buying everything cool that it can get it's hands on irrespective of the busness outlooks of the individual internet properties. By combining these properties into something cool they *can* build a presence yet on the net."

Yikes. Throwing money around 'irrespective of the business outlook' is absolutely irresponsible, both to our employees and shareholders. The logic here doesn't make sense to me at all: Ignore the business fundamentals and make a decision solely on a nebulous perception of 'cool'. Friendster used to be cool, and now seems to be a footnote in the annals of Web 2.0 supplanted by MySpace and Facebook. Let's chat in 10-20 years and see how sound an investment it was to shell out $1.65 billion for YouTube or $35 million for Flickr -- I for one largely think the jury is still out on those. Anyone remember the dotcom bust around 2000? That was largely fueled by just this sort of approach in regards to investment. No thanks -- been there, done that, got the t-shirt (which is the only thing left for my personal 10 grand -- ouch).

3) "Open an incubator in San Francisco."

Done. How about Redmond, Cambridge, Bangalore and Beijing as well. Don't forget our university partnerships either. Not to mention we fund more 'startups' than you can imagine outside of these research groups in product groups themselves. In fact, Windows Media Center (itself a internal startup which has been highly sucessful, shipping 5 great versions in 5 years) just recently spun off its own startup group (can't say more, sorry). Heck, why limit it to only what we can do ourselves -- we should think about how we invest in others. Oh, wait -- that's done too: http://microsoftstartupzone.com/. Don't get me wrong: San Francisco is a lovely place -- but not the only place -- for great ideas and startups.

4) "Rather than one or two top evangelists though they should hire about 30 of these connectors and also give them direct access to the executives making the business decisions at Microsoft."

Evangelism works best when it's grass roots (I think Robert would tend to agree with me here). I think the answer here is not bringing in folks from outside as high profile connectors but rather encouraging and increasing the profile of folks from within. (I'm pretty sure MiniMicrosoft would agree.)

Thomas, you should seriously think about joining Microsoft personally -- you've got the right mindset that change is good -- come and work for a company that really believes that and empowers you to make it happen.



Categories: Microsoft | Comments [1] | # | Posted on Friday, March 9, 2007 6:21:25 AM (GMT Standard Time, UTC+00:00)   

Aaron's got a great writeup on this over at his personal blog: Mailbag: How can I create a loading page for an MCML application?



Categories: Sample | Comments [3] | # | Posted on Saturday, March 3, 2007 3:51:22 PM (GMT Standard Time, UTC+00:00)   
RSS
RSS 2.0
Search
Sign In | All Content © 2014 Charlie Owen

This is a personal weblog. The opinions expressed here represent my own and not those of my employer.


Powered by newtelligence dasBlog 2.3.9074.18820