Over the holiday this past week I got a ping from Scott Cate about some Silverlight media questions, namely a player and Silverlight Streaming.  The gist of the conversation was that the Encoder 2 SP1 templates and the SLS Plugin don’t play nice together (yet).  I know that the team has been testing some updates to the plugin for uploading Silverlight 2 templates to SLS, but for now if you tried to do that you’ll get a random error message that won’t make sense to you (something along the lines of template not found).

After talking with Scott and understanding his scenario more (media formats and CDN hosting – note: CDN=Content Delivery Network - specifically) we, well I, decided it might be a good idea to use an alternate player right now.  Of course I suggested the one that Joel and I worked on, but there are also many other out there.  I should also point out that the Encoder 2 SP1 templates also include a fully functional Silverlight 2 player with source code that you can use.  Scott took my player as a start (not sure if it will be the final one he uses) and we went to chatting about the implementation.  I first told him he could still use SLS and just upload the XAP, etc. but remembered that SLS doesn’t fully support an easy implementation of initParams just yet (it can, but a little workaround-ish right now).  After learning of the initParams, Scott wanted to host the player on his CDN and just pass in the media URI as the param (exactly what our player is built for).

I pointed to the instructions on the SL2VideoPlayer CodePlex site and we started implementing.  So Scott was going to have his pages delivered from his CMS system on his site (let’s call it foo.com) and have the Silverlight application delivered from his CDN (let’s call that mycdn.com).  Then the media was going to be hosted on another CDN (Silverlight Streaming).  We had three networks in play here: foo.com, mycdn.com and Silverlight Streaming.  In his site delivered by his CMS system he’d have the object tag for the player implemented something similar to:

   1: <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="640" height="480">
   2:         <param name="source" value="http://mycdn.com/myaccount/VideoPlayerM.xap"/>
   3:         <param name="background" value="white" />
   4:         <param name="initParams" value="m=http://silverlight.live.com/accountid/Bear.wmv" />
   5:                <param name="minruntimeversion" value="2.0.31005.0" />
   6:         <a href="http://go.microsoft.com/fwlink/?LinkId=124807" style="text-decoration: none;">
   7:              <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/>
   8:         </a>
   9:     </object>

Note that the source for the Silverlight application is a full URI to the CDN endpoint of the XAP file.  Also note the initParams which would point to the video file hosted on Silverlight Streaming (this isn’t the real URI, just a sample).  When rendered, we saw the Silverlight default loader (%age orb) and then a white screen – nothing.  WTF?!  Loading up my favorite tool for Silverlight network debugging we saw the XAP being delivered and loaded, but then the media file was not.

I then remembered that I may have forgot to tell Scott that any remotely loaded XAP needs to ensure that it is delivered with the correct content-type of application/x-silverlight-app to ensure that it would load properly.  We double-checked this and ensured it was (of course it was because it was already being loaded, but good to double check).  Then we couldn’t figure out why it wasn’t loading the media.

Aha!  I remembered that there was one snippet of code that was in there that does a check for a query string parameter.  In doing this, the Silverlight application uses the HTML DOM bridge to interact with, well, the HTML DOM.  This is what was causing the problem.  By default, remotely loaded XAP files cannot access the HTML DOM without the author explicitly allowing it.  So we had to add another parameter to the object tag, the enableHtmlAccess param.  I sent it to Scott in an email (after testing myself) and thought we were done.  He said it still wasn’t working.  Frustrated, we kept looking.  Sergey from the network team alerted me to a possibility of some character encoding issues.  Yep, that was it.  Here’s a screenshot from the code that wasn’t working:

Spot the issue?  The copied/pasted param quotes were not in ASCII encoding and thus I’m assuming HTML was ignoring it.  After Scott typed it out rather than pasting, it worked fine.

Phew!  Nothing like banging your head in the weeds of code when it is a little typo!

Summary

So if you are looking to host your Silverlight content on a CDN for delivery, make sure two things:

    1. The server delivering your XAP content must deliver with the correct MIME type: application/x-silverlight-app
    2. If there is any code in your XAP that does HTML bridge interaction, you’ll have to add the enableHtmlAccess param to either your object tag instantiation as a param, or to your createObject call if using Silverlight.js.

I hope this helps some!

I’ve essentially only had 3 hobbies: computers, golf and SCUBA.  The latter is quite a bit hard to maintain living in a land-locked state in the desert.  The second (golf), however, is very easy to maintain, but long past are the days of free golf that I used to enjoy while working at a golf course and being a part of golf teams.  I now have to actually pay for it :-) -- and sometimes it isn’t a priority to want to go out in 120 degree weather and play golf (although that’s usually when my friends and I go).

Computers has been the easiest as it has also been my profession.  That’s not a good mix because it is hard not to “work” when your profession and your hobby are the same.  It’s caused conflict at home a few times and I’ve been remarkably surprised lately how I’ve been able to separate home and work (while working at home).  It isn’t easy but I’m getting better.

So that’s it.  That’s all my hobbies have ever been.  Pretty sad?  I don’t know…they’re fun and have kept me busy.  But this year I decided to diversify and start something new.  Most of this inspiration comes from my wife doing pretty much everything she desires these days: biking, swimming, triathlons, kayaking, photography.  She’s driven.  She decides on doing something and never slows down.  I realized that I needed to grab some of her passion.

Fender Stratocaster (custom)I was sitting around cleaning house a few months back and saw something in our front room (we call it the ‘front’ room because not a single piece of furniture has ever been in there other than our piano – so it isn’t really a family/living room or anything else) that has been nagging at me…a guitar case.  A few years back during the Visual Studio 2005 launch the theme was “rock the launch” for the events around the US.  Grabbing on to that theme I was a part of a team that engaged one of our customers, Fender, to create custom guitars with the launch theme.  Fender was incredibly awesome to deal with and even decided to try out their new body style at the time along with their new printing process for our project.  It was pretty cool to see our design basically make it to a giant guitar inkjet printer and on to an American Stratocaster guitar.  We made several of these commemorative guitars for the events for prizes and some also hang on Microsoft facilities in the western US offices.  The back of the guitar has some of the commemoration of the event/year as you can see in the photo here.

Interfacing with Fender for the project and working through some of the kinks in the new printing process, I was fortunate to be able to have one of the test run units which has been sitting in my room for 3 years.  I don’t know anything about music and have no skills in that area at all.  My wife is an excellent piano player and my 6-year old daughter is also now playing the piano.  I said to myself I either need to give this to someone who will appreciate it more than the case, or I need to learn how to play it!  I decided on the latter.  I have been taking lessons for about 2 months now and loving it.  My teacher is great and very kind as I’m not-so-kind on his ears.  It has opened up a new world to me and is quite a challenge, more than any of my other hobbies.

Guitars

The geek in me is never satisfied though so I’ve introduced some technology into the mix.  I found a great deal (ebay refirb) on an M-Audio Black Box, which has now been serving as my practice amp since I got it.  It definitely isn’t as sophisticated or cool as some others I’ve seen from some friends like Jason Mauer, but for the price I got a USB interface amp modeling device and a pedal (for which I have no idea yet what to do with of course).  I also have been using the piece of software on my Mac that has been completely useless to me until now: Garageband.  It took me a few minutes to figure out that I needed to change settings in a few different places for the Black Box to be recognized.  Now that it is, it’s a helpful learning aid to me as I can record my practices and review them later (as well as record the good ones for my teacher!).  It’s been a lot of fun learning to play.  This holiday I had hoped Santa was going to bring me a brand new Gretsch Brian Setzer Black Phoenix, but he must not have got my letter in time.  Probably a good thing since that is a hefty investment for him to make on a beginner.  I’m still determined though to get one, but will wait a while.  I did, however, decide to experiment with an acoustic guitar.  After some research I settled on Taylor as a great brand and then of course wanted the sweetest model 914e to add to my collection.  Again, totally impractical for a beginner.  But the research I did do found reviews that said the 110 model was a great guitar and an excellent entry-model for Taylor.  I headed down to my local music shop, Milano Music, and found that they had the 110e model in stock and on sale.  I played with it for a while and loved it…so I walked out with a new guitar.  Here’s my current crappy setup (I need to move them into a room so the kids don’t ruin them) in the picture (click on it for a larger pic).

Like I said, this has been a lot of fun – and addicting.  I hope to keep it up and get better every week.  I’ve been learning the basic 12-bar blues, Cream’s Sunshing of your Love, Neil Young’s Heart of Gold and I also present you with my first recording: Happy Birthday.  Maybe I’ll escalate from there :-).

It has been real refreshing to take a break from immersion in technologies like Silverlight and .NET and learn something completely new and challenging…I highly recommend it!


This work is licensed under a Creative Commons Attribution By license.

Having a hard time finding that gift for your techno dweep friend/husband/relative/co-worker?  Probably not if you are subscribed here :-).  But I thought that I’d highlight my favorite tech things this year that I think will make the perfect gift.  Arranged in my order of preference.

Garmin Nuvi (model 260 or 760)

My first pick is the best technology gift I’ve been given in years.  I received it as a father’s day gift this year and wrote how much I love my Garmin Nuvi 260.  The funny thing is that I have GPS in my car, but it is outdated and looking at it makes me think I’m driving a car with a mainframe inside it (3 colors).  As dorky/geeky/nerdy/whatever-term-you-use as I am, I still love this thing.  I opted for the 260 because it has Text-to-Speech capabilities (‘turn right on Queen Creek Road’ versus ‘Turn right ahead’), but the 250 is the exact same model as this and was on sale at Walmart for $95 this season (not sure if it still is).  I did all my research and found that the Nuvi line, specifically the 260/260W, were rated among the best (in my price range).  Sure enough soon after, Garmin has the 760 which improves upon the design and the user interface providing a little better street visuals when you need them and voice commands, bluetooth as well I believe.  If I didn’t have my 260, I’d get the 760.  It is available at Costco for a great price and I’m sure elsewhere.  I really, really love this thing and anyone who spends a lot of time in their car will love it to.  If you are buying a car, don’t get suckered in for the $2,000 ‘navigation system’ – buy your car, then head to Costco, Best Buy, wherever you prefer to buy your tech gadgets and pick up a Garmin Nuvi model of your liking.  They will be portable to all your cars, use while traveling/renting cars, walking, cycling (we have a bike mount), and you can add maps for other areas (I got Mexico for $65 versus DVD updates for my car at $299).  Trust me, pass on the vehicle systems.  You’ll thank yourself.  Oh and when you get on be sure to subscribe to the Garmin blog for fun updates for POI and vehicle icons, etc.

AmazonMP3.com

Okay if you or your loved ones are buying iTunes music still…please stop.  I don’t know why you would.  It’s some of the lowest quality digital media you can buy out there.  If you have a Zune, and love music, then hopefully you are a Zune Pass subscriber and get all the music you want and the ability to keep 10 songs monthly DRM-free.  But if you aren’t, or just want to always have DRM-free music like me (and aren’t wanting it for illegal reasons of course), then wake up to Amazon MP3.  They have a downloader application that I highly recommend you use only for one reason if you are an iTunes user – because they have a feature to automatically add your new purchases to your iTunes library.  This little polish makes it almost as seamless as the iTunes process itself.  I’ve only found a few things that Amazon didn’t have and I suspect that was because of exclusive licensing deals with iTunes preventing them from getting the titles.  But I recently picked up the newly released Killers album (great album BTW) for $4.99 (10 songs).  Some of the albums aren’t priced that well but I think that has to do with volume.  A 13-album song by Ashley McIsaac was still about $9.89, but a 2 disc Live album from Dave Matthews Band was $7.  Nice.  Oh, and the audio quality is far better (still not CD quality).  Amazon is 256kpbs encoded MP3, while iTunes music is 128kbps.  C’mon, kick your iTunes habit…or buy someone an Amazon gift certificate so they can try it out and kick their habit.

Netflix Subscription

I was an original Netflix customer when they first started.  Then the price point wasn’t there anymore for me.  Now it is.  If you rent at least 2 videos a month, it will pay for itself (arguably maybe even just one a month it will).  Some will argue that Redbox is better option (and I think Redbox does fulfill the need for immediate gratification, but my experience has shown that new release titles are lacking and when they are there, my local Redbox doesn’t have them when I happen to be near by), but Netflix offers you a multitude of ways to watch movies…here they are:

    • Traditional DVDs – you queue up what you want.  Build your queue as far in advance as you want – and that’s actually the recommendation…when you remember there is a movie you want to watch, add it…then it will be delivered without you forgetting that you wanted it!  This, in my opinion, is the greatest asset to Netflix…it’s my entertainment servant.  You can even add non-released movies so when they are released and available they are already in your queue!
    • Watch Instantly PC/Mac – travel a lot?  Go with the kids places?  Take your laptop and an Internet connection and you can log into your Netflix account and watch movies from your Watch Instant queue.  Not every movie is there (yet) but it is a good selection and I keep kid movies in my queue for this reason.  Oh, btw, this feature brought to you via Silverlight technology…nice.
    • Watch Instantly XBOX – um, sweet.  Turn on XBOX, navigate to Netflix, watch movie on home theater.  Great quality as well.  This is sweet.  If you have an XBOX and watch at least 2 movies a month, this alone is worth it!
    • TiVo integration – now you can watch movies from Netflix on TiVo as well!  Holy crud, this thing is everywhere.  Unfortunately for me this only applies to TiVo Series 3 or HD boxes or I’d have Netflix at every media device in my home.  But if Netflix/TiVo wants to send me a free TiVo HD XL for this plug I certainly wouldn’t be offended :-) (NOTE: all these are unsolicited just for clarification.)

The plans are affordable.  I am on the $4.99 a month plan which allows me 2 DVDs per month and instant watch features.  So far that has been sufficient.  $8.99 will get you unlimited movies a month (1 DVD at a time).  Fulfillment and return process couldn’t be easier.  With Netflix and Redbox, I’m curious why I still even consider Blockbuster?

Flip Video portable video cameras

Looking for a the simplest video camera with the best quality for the price?  Look no further than the Flip Video line of cameras.  I explain it to people as the ‘iPod of video cameras’ – dead simple.  Power on.  Giant red button for start/stop.  Click another button and plug it in to your computer.  Done.  I have the Flip Video Ultra series that runs on 2 AA batteries.  The newer models have rechargeable batteries, but I really like the flexibility of not having to worry about a charger at all.  I love my Flip.  It is so easy to use, powers on fast (could be faster, that would be my feature request to them), takes GREAT quality audio/video for the size camera it is.  At that’s not a knock on it for the price.  Seriously, in a crowded, low-lit room, even my Ultra gets only the audio that I want it to – sure there is ambient noise, but not as much as you’d think.  The video (640x480 on the Ultra) is also great quality.  I am not producing HD-quality movies with mine, but for my home-use to catch those moments, it is great.  And the physical size of the device is awesome.  No bad needed, fits in back pocket while at Disney, etc.  Pure awesomeness.  They have the Flip Mino (smaller version) and now the Flip MinoHD for HD-quality output (1280x720 – gee I wonder why YouTube upgraded seeing how Flip is one of the most popular video recorders now).  They all record only about 60 minutes, but in my experience this has been more than enough to record, dump onto my laptop, and record some more…and usually I never have to do that while at an event or anything…I find my clips are 5-10 minutes each max.  If you need a compact, good quality video camera visit http://www.flipvideo.com – I’m thinking of investigating the HD one myself as an upgrade!

Rockband 2

Endless hours of family fun with Rockband 2 for Wii, XBOX, Playstation.  It’s the only ‘game’ my XBOX really sees playtime out of.  The whole family can play and we routinely invite our neighbors over for ‘band practice.’  It probably isn’t helping my new guitar lessons, but it is an absolute blast to play.  Rockband 2 has a huge amount of songs and has the included ‘unlock all songs’ feature so no need to go through some R-R-B-Y-BB-RR-GG-Y-B-G-OO-OB hack to get things unlocked.  I think they finally understood that some people want to just play and have fun…I could care less about my score, but really want to jam out to Chop Suey!  I’ve heard that the instruments from Guitar Hero World Tour work with Rockband and are actually better drums, but haven’t tried to verify.  At any rate, if you have a game console in your house and are sick of your kids playing Death By Gunshot Wounds to the Brain, or some other similar title, then pick up rockband, and jam to some favorite songs.  With XBOX Live you can download more and more songs as well…it’s great.

So that’s it.  These are the techno things that have kept me happy this year.  There are more of course, but these are the top things that I think every geek should have.  Hopefully this helps some with ideas.  If not, oh well.  Happy Holidays.

Who, didn’t think I’d see “Microsoft Corporation” listed in the Apple AppStore for iPhone this quick. 

Want to view gigapixel images on your iPhone?  The team at Live Labs just announced their approved iPhone App – Seadragon Mobile.

So what is Seadragon?  it was the original Microsoft Research project that many products are now based on.  Most popular probably is the Deep Zoom technology brought first to Silverlight 2.  This is the process of taking gigapixel image and providing a smooth viewing experience viewing that image over even lower bandwidth speeds.  One of the most popular Deep Zoom Silverlight sites is the Hard Rock Memorabilia site which shows over 500 of Hard Rock’s most collectable items, including the original Fender guitar from Clapton that started it all.

Now you can get that same viewing experience on the iPhone.  I installed it real quick and it was pretty impressive (viewed over WiFi connection).  Even though the Photosynth option is there, if you don’t read the fine print you’ll wonder why it keeps saying “Loading…” – it’s because it isn’t activated yet.  My guess is that the team wanted to have that option in there so they wouldn’t have to re-submit the app, but rather just turn on the collections.

So plug away!  Use Deep Zoom composer to create your collections with Deep Zoom Composer and view them in various ways now, including mobile.

The technology allows for you to look at an image like below and zoom in to see that the image is actually made up of cola cans ordered in a mosaic format:

 

Of course this is just a fun example, but there are others and with the Photosynth integration, it would be quite cool.  Check it out!

A few days ago Google announced “event tracking” for their Google Analytics platform.  My account was invited to participate in this initial wave so I decided to take a look.  The main reason of course is because of a keyword in their email they sent to me (emphasis mine):

“Event Tracking allows you to track interactions with Web 2.0 style content such as Flash, AJAX, Silverlight, social networking apps, etc.”

I have the script already running on my site for general analytics so I figured I’d whip up a quick sample to see how it might work with Silverlight.  If you are in to analytics you may also want to check out Michael Scherotter’s webcast with WebTrends on some analytics techniques with Silverlight as well.

There are a bunch of existing techniques you can do today using existing analytics packages and scripts, but it is really nice to see movements toward recognizing unique characteristics of rich Internet application activities and the need for something more granular that represents user behavior rather than just a view.  After all, “paths” for normal web browsing have been available for analytics for a long while…why should RIA have to suffer?  The main reason is that no analytics packages have successfully managed yet to provide enough artificial intelligence to reflect on the behavior within the RIA.  As RIA development becomes more mainstream in applications facing the consumers, it will be increasingly important to understand where/what the user’s are doing to discern better usability changes, etc.

Google calls their feature “event tracking” and enables a function on the existing script to track an event, much like a Windows event log (for those who are familiar with it).  You provide a category and action, then optionally a label and value (where value is an integer value, generally going to be used I assume for counts of actions).  The “action” doesn’t have to actually be an literal action such as “click” but something you can put together.

In my less-than-creative mind I just thought of putting together two category scenarios: media and e-commerce.  My commerce actions would be: Add Item to Cart, Sample Music (i.e. a music store action), Start Checkout, Complete Order…all rolled up in a Commerce category.  My Media category would include Play and Pause tracking.  The signature of the event tracking method in Google is:

   1: _trackEvent(category, action, [label], [value]);

This would be called on your variable given to whatever your _getTracker() call was made with (mine is called pageTracker, using the default from the script).

NOTE: This post assumes you know some of the terminology from Google analytics offering.  If you don’t, you can read about it at their Analytics page.

Since all of this was Javascript calling from Silverlight I’d have to use the HTML bridge capabilities.  You can learn how to call Javascript from Silverlight from here or view a walk-through video on how to do it on the Silverlight community site as well.  I created a simple function on my page that basically wrapped the actual function call.  Honestly I figured it would be here that you may want to do some error handling or any other event-based “stuff” – but for now, it’s pretty much just a wrapper to the same function and looks like this:

   1: <script type="text/javascript">
   2: var pageTracker = _gat._getTracker("PROFILE_CODE_HERE");
   3: pageTracker._initData();
   4: pageTracker._trackPageview();
   5: </script>
   6:  
   7: <script type="text/javascript">
   8:     function trackEvent(category, action, label) {
   9:         pageTracker._trackEvent(category, action, label);
  10:     }
  11: </script>

As you can see, in my sample I wasn’t concerned with the value parameter for now.  Now in my Silverlight application I just created some lame looking XAML that would more generally be spread out throughout a typical application, but just for playing I put it in one place.  Here’s the XAML:

   1: <UserControl x:Class="GAEventTracking.Page"
   2:     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
   3:     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
   4:     Width="400" Height="600">
   5:     <Grid x:Name="LayoutRoot" Background="White">
   6:         <StackPanel Orientation="Vertical">
   7:             <Button Width="200" Content="Added Item to Cart" x:Name="AddCart" />
   8:             <Button Width="200" Content="Sampled Music File" x:Name="SampleMusic" />
   9:             <Button Width="200" Content="Started Checkout" x:Name="StartCheckout" />
  10:             <Button Width="200" Content="Completed Order" x:Name="CompleteOrder" />
  11:             <MediaElement x:Name="LakeVideo" Width="320" Height="240" 
  12:                           Source="Lake.wmv" AutoPlay="False"/>
  13:             <StackPanel Orientation="Horizontal">
  14:                 <Button Content="Play" x:Name="PlayVideo" />
  15:                 <Button Content="Pause" x:Name="PauseVideo" />
  16:             </StackPanel>
  17:         </StackPanel>
  18:     </Grid>
  19: </UserControl>

On the relevant code I’ve wired up the buttons to the same event handler for simplicity and just looking at the name and content for what to do.  Here’s what that looks like:

   1: public Page()
   2: {
   3:     InitializeComponent();
   4:     AddCart.Click += new RoutedEventHandler(EventButtonClick);
   5:     SampleMusic.Click += new RoutedEventHandler(EventButtonClick);
   6:     StartCheckout.Click += new RoutedEventHandler(EventButtonClick);
   7:     CompleteOrder.Click += new RoutedEventHandler(EventButtonClick);
   8:     PlayVideo.Click += new RoutedEventHandler(PlayVideo_Click);
   9:     PauseVideo.Click += new RoutedEventHandler(PauseVideo_Click);
  10: }
  11:  
  12: void PauseVideo_Click(object sender, RoutedEventArgs e)
  13: {
  14:     LakeVideo.Pause();
  15:     HtmlPage.Window.Invoke("trackEvent", new object[] { "Media", "Pause", "Lake video was paused" });
  16: }
  17:  
  18: void PlayVideo_Click(object sender, RoutedEventArgs e)
  19: {
  20:     LakeVideo.Play();
  21:     HtmlPage.Window.Invoke("trackEvent", new object[] { "Media", "Play", "Lake video was started" });
  22: }
  23:  
  24: void EventButtonClick(object sender, RoutedEventArgs e)
  25: {
  26:     Button btn = sender as Button;
  27:     string actionName = btn.Name;
  28:     string label = btn.Content.ToString();
  29:  
  30:     HtmlPage.Window.Invoke("trackEvent", new object[] { "Commerce", actionName, label });
  31: }

So you can see here at line 30 above is where the relevant code is.  Using the HTML bridge, I can invoke a method on the hosting page and provide the arguments to it.  That’s it!  So what does this look like on the reporting side?

For a summary view of the categories you’ll get some decent information about the action:

But then when you also drill into a specific category, your label information will be viewable:

So that now using methods like this you could track specifically what is going on within your RIA.  As I mentioned, you can do this with existing platforms today with being clever of how you track a “PageView” but it is nice to see a specific implementation for event-driven tracking.  And this isn’t limited to just RIA, you can still (obviously) use this event tracking in your AJAX applications, static pages, whatever.

The Google links demonstrated how to implement this with ActionScript and Flash, but while they mentioned Silverlight, they didn’t provide a relevant sample.  Luckily basically the steps are as easy as outlined here:

    • Include the tracking script
    • Decide what/when/where you want to track within your Silverlight application
    • Use the HTML bridge (Html.Window.Invoke) to call out to the _trackEvent function

Again the relevant code for Silverlight is:

   1: HtmlPage.Window.Invoke("[methodName]", new object[] { "[category]", "[action]", "[label]"});

Where the “[methodName]” is whatever Javascript function you are calling that exists in the hosting page (and matching the proper signature you’ve set up.  As I mentioned I didn’t use the optional value parameter in the event tracking, but had you done that (say you wanted to know how many times a media item had been played) you’d add a value of “1” for example and the reporting would provide aggregate summaries of that action within the category.

Have fun and hope this helps some!