With Windows Vista barely one week past RTM the Windows Media Center team started our first milestone for the next version this week. One of the guiding principles we will use to determine features for vNext is identifying and removing roadblocks which keep people from using Windows Media Center.

One example of this is the new Express Setup you find in 'Diamond'. 'Emerald' and previous versions (version history and codenames) forced the user into a rather lengthy first run setup wizard about 10-14 pages at minimum for most users. By contrast, the new Express Setup in 'Diamond' requires but a single action the first time you launch Windows Media Center before you are instantly able to start using the features.

We would love to hear your thoughts about blocking issues which keep you from fully enjoying Windows Media Center more. Leave comments for the team to read.



Categories: Windows Media Center | Comments [114] | # | Posted on Wednesday, November 15, 2006 3:54:35 AM (GMT Standard Time, UTC+00:00)   

Our current hosting provider has us on a shared server which has an IP address blacklisted by several of the anti-spam folks. Yuck. Therefore none of the email sent by this server is getting through to most people. That's not good. It's also gone offline more than I would prefer. But I guess we've gotten enough bang for our buck at $19.95 per month -- but sense those dollars should be able to give us a bit more.

So, I'm on the lookout for a great hosting provider who can provide a solution which supports at least the following in addition to the regular web site hosting...

DASBlog 1.9

Community Server (Personal or Standard Edition)

SQL Server (for Community Server and other stuff)

The sites which would be hosted include...

http://www.retrosight.com, http://blog.retrosight.com, http://www.mediacentersandbox.com, http://blog.mediacentersandbox.com, http://discuss.mediacentersandbox.com and http://play.mediacentersandbox.com.

Please leave your recommendations in the comments, or drop me a line at charlieo@microsoft.com if you are a hosting provider and have a great solution.



Categories: Web Hosting | Comments [8] | # | Posted on Thursday, November 09, 2006 4:14:07 PM (GMT Standard Time, UTC+00:00)   

Ian Dixon has posted part 2 of the interview I did with him a few weeks ago where we discussed Media Center Markup Language (MCML) development.  This episode goes into more detail about MCML development.  We discuss topics such as using Rules in your UI, when and how to write code-behind assemblies for MCML applications, Windows Media Center Presentation Layer web applications, and packaging and deployment of applications.

Here are links to this segment and also to the previous segment and the extra session that Ian recorded where he demonstrates some of the Windows Media Center SDK tools and samples:

Aaron

 



Categories: News | Comments [0] | # | Posted on Thursday, October 26, 2006 6:38:01 PM (GMT Daylight Time, UTC+01:00)   

A new episode of the Media Center Show has been posted today that focuses on Media Center Markup Language (MCML) development.  I talked with Ian Dixon a few weeks ago, and he decided to create a  2 part show based on our talk (part 2 will be coming next week).

The first part focuses on getting started if you are new to MCML development.  It includes a discussion of some of the learning tools and samples included in the Windows Media Center SDK (such as McmlSampler and the Q sample podcast and videoblog client).

In addition, Ian posted a Media Center Show Extra segment where he presents an overview of both McmlSampler and Q running within Windows Media Center.

Here are links to both the show and the extra segment:

Hopefully you will find this information useful as you get started with Windows Media Center development.

Aaron

 



Categories: News | Comments [1] | # | Posted on Thursday, October 19, 2006 5:51:55 PM (GMT Daylight Time, UTC+01:00)   

(How many of you have parents who believe email exists solely as a big ol' chain letter distribution system? Every once in a while a gem slips through just barely worthy of broader distribution. I got one from my mother this morning which fit the bill. Being from the south, I made a few 'enhancements' to be more relative to today. Enjoy! -- but please do not forward <-- wasted breath.)

It has come to our attention that a few beta copies of Windows Vista Southern Edition RC2 may have accidentally been shipped outside of the south.

If you have one of these, you may need help understanding the commands. Windows Vista Southern Edition may be recognized by the unique opening screen. It reads: Winders Vista, with a background picture of Waylon and Willie superimposed on a bottle of Jack Daniels.

Please also note:

 The Recycle Bin is labeled "Outhouse"
 My Computer is called "This Dern Contraption"
 Dial Up Networking is called "Good Ol' Boys"
 Control Panel is known as "The Dashboard"
 Hard Drive is referred to as "4-Wheel Drive"
 CD and DVDs are "Them little ol' plastic frisbee thangs"
 Instead of an error message, "Duct Tape" pops up.

Changes in Terminology in Windows Vista Southern Edition:

 Cancel............stopdat
 Reset..............try'er agin
 Yes...............yep
 No................nope
 Find..............hunt fer it
 Go to............over yonder
 Back...............back yonder
 Help..............hep me out here
 Stop...............kwitit (WHOA!)
 Start............crank'er up
 Settings..........settins
 Programs.........stuff at duz stuff
 Documents........stuff ah done did

Also note that Windows Vista Southern Edition does not recognize capital letters or punctuation marks.

Some programs that are exclusive to Winders Vista:

 Tiperiter.........a word processing program
 Colerin' Book.................a graphics program
 Cyferin' Mersheen...........calculator
 Outhouse Paper................notepad
 Inner-net....................Internet Explorer 7.0
 Pitchers .......................a graphics viewer
 Bubba Tube....................Windows Media Center

We regret any inconvenience it may have caused. If you received a copy of Windows Vista Southern Edition, you may return it to Microsoft for a replacement version: Windows Vista Home Premium Ultimate Redneck Edition (codenamed 'Hee Haw').

I hope this helps all y'all!

Billy Bob

Get er done!



Categories: Windows Vista | Comments [5] | # | Posted on Friday, October 13, 2006 4:08:34 PM (GMT Daylight Time, UTC+01:00)   

Just got this from JoeB...

Congrats, everyone, on another terrific milestone for Media Center…   today in his Digital Life keynote, Mike Sievert will announce that Media Center has sold 20 MILLION UNITS.

Wow. Just wow. It's pretty nifty to work on a product which has reached 20 million folks worldwide. Sweet.



Categories: Media Center | Comments [8] | # | Posted on Thursday, October 12, 2006 6:02:02 PM (GMT Daylight Time, UTC+01:00)   

One of the developers on our team recently created a sample Windows Media Center Presentation Layer web application that demonstrates how to utilize a Host object to access data that is created dynamically on a server without requiring the page to reload.  This technique can be particularly useful when you want to update some content on a page that contains numerous assets that you do not want to re-download and/or if you want to avoid visible flashing and transitions for page reloads.

There are two components to this sample - the sample UI and the sample data generation file.

Sample UI component

A live version of the sample UI can be found at http://play.mediacentersandbox.com/Sample.DataTransfer.mcml.  It contains 2 UI elements: a DataTransfer UI, and the main UI.

DataTransfer UI

The DataTransfer UI is an abstraction layer that encapsulates the functionality of loading new data into an already visible MCML page. 

Consumers that want to use this DataTransfer object need to provide the following properties:

  • A ResultSet (which is an ArrayListDataSet object) to store the results of the server-side data generation
  • A RequestStatus (which is an EditableText object) to store the current status of the data transfer
  • A TargetSource (which is a string) to specify the URL where the data should come from
  • A RefreshCommand (which is a Command object) that will invoke a data refresh

Main UI

The main UI contains an example of a common usage scenario using the DataTransfer UI. It contains the following elements:

  • An instance of the DataTransfer UI
  • A button that triggers the DataTransfer object to refresh its data when invoked (this could be easily modified to automatically refresh the data by using a timer instead of a button that the user has to click)
  • A Text field to display the status of the data transfer - it is bound to the RequestStatus that is returned by the DataTransfer object
  • A Repeater to display the updated data - it is bound to the ResultSet that is returned by the DataTransfer object

Sample data generation file

A live version of the sample data generation file can be found at http://play.mediacentersandbox.com/RandomData.aspx.  The source code for it looks like this:

<%@ Page Language="C#" %>
<% Response.ContentType = "text/xml"; %><%Response.Expires=0; %>
<% Random r = new Random(); %>
<Mcml
    xmlns="http://schemas.microsoft.com/2006/mcml"
    xmlns:cor="assembly://MSCorLib/System"
    xmlns:me="Me"
>

  <UI Name="Result">
    <Properties>
      <ArrayListDataSet Name="ResultSet">
        <Source>
          <cor:String String="Random.Next = <%=r.Next()%>" />
          <cor:String String="Random.Next = <%=r.Next()%>" />
          <cor:String String="Random.Next = <%=r.Next()%>" />
          <cor:String String="Random.Next = <%=r.Next()%>" />
          <cor:String String="Random.Next = <%=r.Next()%>" />
          <cor:String String="Random.Next = <%=r.Next()%>" />
        </Source>
      </ArrayListDataSet>
    </Properties>
  </UI>

</Mcml>

You can try out this example on your Windows Vista Home Premium or Ultimate Edition RC1 or later system by downloading this RegisterMceApp XML file and running RegisterMceApp.exe <path to codeless_datatransfer_example.xml>

When you register this XML file, you will have an entry named Data Transfer Sample in the Program Library.  When you launch the sample in Windows Media Center and click the Load New Data button, the ResultSet object will be populated with 6 new random numbers, and since the ResultSet is bound to the repeater on the client UI, the data in the repeater will automatically update each time you click the button without requiring the entire page to refresh.  The UI will look like the following:

A couple of additional notes

  1. Keep in mind that due to the security restrictions in place for Windows Media Center Presentation Layer Web Applications, the UI page and the data generation page must both be hosted on the same web domain for this scenario to work as expected.  For this sample, both are hosted on the play.mediacentersandbox.com domain
  2. This scenario demonstrates a relatively simple dynamic data scenario.  For a more involved example of how to dynamically switch hosts, see the sample in McmlSampler named AdvancedMarkup.HostViewItem.mcml

Aaron

 



Categories: Sample | Comments [1] | # | Posted on Wednesday, October 04, 2006 2:14:38 AM (GMT Daylight Time, UTC+01:00)   

I thought this video from on10.net was pretty cool -- check it out: http://on10.net/Blogs/TheShow/6849/

I wonder if you could expand this out to a Windows Media Center client for participation -- I bet execs would absolutely love that type of feature.



Categories: Miscellaneous | Windows Vista | Comments [1] | # | Posted on Thursday, September 21, 2006 4:49:39 AM (GMT Daylight Time, UTC+01:00)   

In an email conversation with Seth Jayson (see this post) he mentioned one of the 'flies in the ointment' of the XBox 360 media capabilities (including Media Center Extender) compared to the announced Apple iTV was the 'sometimes loud fan in the XBox'.

I've been using the XBox 360 Media Center Extender for a couple of months now and the fan noise has never seemed overbearing to me or my family. I can see where an audiophile who wants absolute silence would not be overjoyed by the fan noise, but then again those folks will spend a lot more than $299 to fuel their quest for sonic perfection.

Curious, I borrowed a decibel meter this evening to see how loud the XBox 360 fans would become during normal use of the XBox 360 as a Media Center Extender. Unfortunately, the lowest measurement of the unit was 50db, making it less than ideal to measure the sound generated at a reasonable, normal distance from the unit (like 10'). According to this Wikipedia entry 50db is the equivalent of a 'quiet restaurant inside'.

Still, I thought the test would be interesting -- so I launched the Media Center Extender on the XBox 360 and kicked off a high definition recorded TV show (Law & Order, a favorite) and let it play for 30 minutes before taking measurements.

Anyone care to guess how close to the XBox 360 and where I had to put the meter to get it to register a continuous 50db...?

I guess you could say this is the audio equivalent of guessing how many M&Ms are in the jar. :-) Leave a comment with your guess.

Meanwhile, I'm going to track down a more sensitive decibel meter.



Categories: Media Center | Media Center Extender | XBox 360 | Comments [31] | # | Posted on Tuesday, September 19, 2006 5:19:50 AM (GMT Daylight Time, UTC+01:00)   

By default, when a user clicks on an entry point in the Windows Media Center UI to launch a Windows Media Center application, a new instance of the Windows Media Center hosting process (ehExtHost.exe) is created and a new instance of the application is started within that hosting process.

 

In addition, Windows Media Center maintains a back stack of up to 8 applications so that the user can press the back button on the remote control and return to the previous experience.  If a user clicks on an application entry point more than once, each instance of the application is also added to the Windows Media Center back stack up to the limit of 8 instances.

 

Because of this back stack behavior, it is possible to have up to 8 instances of the same Windows Media Center application running in separate ehExtHost processes on the user’s system.  Having multiple instances of the same Windows Media Center application running on the system simultaneously can cause the following problems: 

  • Performance – large applications can quickly consume a lot of system resources and slow down the overall system performance.  This is particularly problematic for hosted XBAP applications because XBAPs are hosted by another executable named PresentationHost.exe in addition to ehExtHost.exe.
  • Shared resources – if a Media Center application reads from and writes to shared data sources on the file system or in the registry, having multiple instances running at the same time can cause resource contention problems, race conditions and other problems in the application code. 

It is possible to code a Windows Media Center application to prevent multiple instances from being launched and running at the same time on the user’s system.  Jossef Goldberg, a program manager on the Windows Presentation Foundation (WPF) team, has posted a sample application to demonstrate how to accomplish this.  His example, which can be downloaded from this location, provides sample code for an XBAP application, but the concepts can be applied equally to Media Center Markup Language (MCML) applications or Windows Media Center Presentation Layer background applications.

 

This sample application includes 2 pieces:

  1. A stub application entry point that is used to ensure single instancing
  2. The “real” application entry point that contains the code and UI that the user sees within Windows Media Center

Both entry points are registered with Windows Media Center using the RegisterApplication API or the RegisterMceApp utility.  However, only the stub entry point will appear within the Windows Media Center UI and allow the user to click on it to invoke it.  The real entry point is registered with a hidden category so that the user cannot invoke it directly, which allows the stub entry point to manage invokation of the real entry point.

A mutex is created at the beginning of the Launch method in the stub entry point that is called by Windows Media Center when the user clicks on an entry point in the UI.  If the mutex is acquired successfully, the stub entry point code calls the LaunchEntryPoint API to create a new instance of the real entry point.  If the mutex is already held and cannot be created, the stub entry point code calls the ReturnToApplication API to navigate to the instance of the real entry point that is already running in the Windows Media Center back stack.

 

The following is an example implementation of the Launch method for a Windows Media Center stub entry point that can be used to ensure that at most a single instance of an application will be running at any given time.  You will need to replace <application_guid> and <entrypoint_guid> with the actual GUID values for your real entry point.

public void Launch(AddInHost host)
{
    // Create a named Mutex to check if an instance of this application is already running
    bool bMyMutexWasCreated;
    Mutex myMutex = new Mutex(true, "MyMediaCenterMutex", out bMyMutexWasCreated);

    if (!bMyMutexWasCreated) 
    {
      // If we get here, the application is already running; bring it to the foreground
      host.ApplicationContext.ReturnToApplication();
    }
    else
    {
      // If we get here, the application is not running; launch it now
      host.MediaCenterEnvironment.LaunchEntryPoint(new Guid("{<application_guid>}"), new Guid("{<entrypoint_guid>}"), null);     
    }
}

You can also try out a runnable XBAP sample application that implements the above algorithm by downloading the ZIP file at this location and following the instructions in LaunchSingleInstance_ReadMe.doc inside of the ZIP file.

Aaron

 



Categories: Sample | Comments [2] | # | Posted on Sunday, September 17, 2006 8:16:13 PM (GMT Daylight Time, UTC+01:00)   
Search
Sign In | All Content © 2010 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