if it looks like a red bull can, would you assume it is an equivalent energy drink?  i did.  damn marketers. :-)

here's what i'm talking about:

  

red bull is obviously the first can.  while in costco the other day i saw this 'bloom energy' drink.  i fell for it.  looked like an energy drink can (silver/skinny), and wild berry sounded intriguing (more than taurine energy drink flavor).  i didn't bother looking at the ingredients and figured i'd give this energy drink a try.

guess what.  carbonated grape juice (with white tea extract which is the source of caffeine).  yeah, not what i expected.  tasty, but not energy-y.  i was fooled by clever marketing.  i saw another one the other day -- the flavor was "blood orange" -- i don't care what you say, anything that says blood orange, i'm buying.

oh the heineken one?  saw that on a billboard driving downtown one day.  same thing: skinny, silver can.  but it's beer.  i wonder if it sells better.

as you might suspect, if you are hosting applications via , you may have to make some modifications there as well to support the release candidate.  when hosting the python cube for mark, i had to make a few updates and thought i'd give some quick pointers to information that already exists as well as walk through a simple example.

if you have a streaming sample, you might be seeing it running and showing the "Get Silverlight" banner:

this, of course, assumes that the user has the updated silverlight plugin installed (either 1.0 RC or 1.1 alpha refresh).  this is because of two things.  first, your code might be specifically looking for a version and, perhaps more importantly, the page you have hosting the silverlight streaming application is still referencing an older silverlight.js script.  let's walk through what is needed to change my sample.

first, i have a simple sample, it is a button that when you click does an alert().  this is a v1.0 sample, but the same steps apply for v1.1 samples.  the first step is to update my code in silverlight.  you can view my screencast on how to do this as i won't re-iterate that here.  let's assume you have your code working (updated the silverlight.js file, reviewed the breaking changes documentation to fix other things, etc.).

okay the next thing we have to do is modify our zip file that we'll be submitting to the silverlight streaming service.  the zip file is simply a packaging mechanism that you wrap all your code up into and specify certain parameters.  there is one file in the zip file that is the manifest (appropriately named manifest.xml) that defines the parameters, and some other features.  my initial manifest file for my simple button looks like this:

<SilverlightApp>
    <source>Scene.xaml</source>
    <width>400</width>
    <height>50</height>
    <jsOrder>
        <js>Silverlight.js</js>
        <js>Scene.xaml.js</js>
        <js>Default.html.js</js>
    </jsOrder>
    <version>0.9</version>
</SilverlightApp>

note the <version> node.  here is where another update needs to be made.  this needs to be changed to the appropriate version you are using.  so i'll change mine to <version>1.0</version>.  done.  for my sample, not much else actually needs to be updated in the code, so i can package up my sample and upload it.  here you'll want to login to your silverlight streaming account and choose the manage applications link on the left:

once successfully updated, you'll be presented with the manage applications page again that gives you instructions on how to host your streaming application in a page (3 steps).  here's where you'll want to start making some alterations.  in step one it indicates the reference to the silverlight.js file as:

<script type="text/javascript" src="http://agappdom.net/g/silverlight.js"></script>

for the release candidate you'll want it to be:

<script type="text/javascript" src="http://agappdom.net/h/silverlight.js"></script>

note the subtle change in the "h" path reference.  in step 3 it indicates the code as:

function CreateSilverlight(){
  Sys.Silverlight.createHostedObjectEx({

when for the release candidate it should be:

function CreateSilverlight(){
  Silverlight.createHostedObjectEx({

note just removing the "Sys." as indicated in the breaking changes document in the SDKs.  making these two changes with an updated/uploaded application that works with the release candidate will make your streaming sample work again.

of course, these changes are documented in the news item on the silverlight streaming site posted here.  the online sdk for the silverlight streaming service will be updated shortly to reflect these changes as well.

so rather than host my stream in this blog post, i figure the proof is in the pudding and i updated my previous post where this exact sample was previously hosted.  go there and you'll see a button near the bottom...click it :-).

also, did you know you can stream your app via an iframe...use the following pattern:

http://silverlight.services.live.com/invoke/{accountId}/{fileset}/iframe.html

pretty cool.  if you have any questions about the silverlight streaming, check out the forums!  this was a very simple sample of course, but at least it should get you started in the right direction.

i've been at OSCON all week (more day 3 posts coming up soon).  while i was out, if you are a microsoft dev, you no doubt saw the flurry of announcements of visual studio 2008 beta 2 (with golive), .net 3.5, and rc1 releases.

for the silverlight goodness, you can check out all the new stuff:

and some of the new tools releases

silverlight rc1 also includes a 'refresh' to the alpha version (v1.1) of silverlight, so you'll want to grab that if you are doing the v1.1 development.  because there are breaking changes between beta and this release candidate, samples/sites you may have visited may not work as expected.  in fact, you may have the latest plugin installed (which is now self-updating btw), but go to a site and see the "install beta" image.  if you see this (and know you have the latest plugin installed) it is likely because the author hasn't updated their site yet.  you should contact the author/site...tell them to contact me, i'll help them get it updated and understand the breaking changes.

in fact, some of our great silverlight applications out there now have already been updated!

the guys at already readied their game, , for the refresh of silverlight.  Lt. Bennett is back in the game ready for your high score attempts.  go check it out!

here are some others that have been updated:

know of others that were updated?  post them here!  with all of the updates, it is time for a re-pave of my machine for me...i've done a few too many betas/alphas/uninstalls in the past week to make me sick.  i'm going to drop the old box into the pep boys for a tune up...

yeah, i know, news flash.  there will be about 8 billion other blog posts about it so i have nothing more to add...but wanted to be sure you read scottgu's post on the subject which includes a special installation note.

what is windmill?  it is described as:

Project Windmill was created with the intention of reaching 100% automated testing of heavy Ajax web applications after trying desperately to make existing solutions work.

i'm eager to listen to this one.  i've used selenium as a web testing UI platform in the past and like a lot of what it offers...i'm expecting to see what windmill provides better/different and if it is more simplistic...here we go.

the guys behind this are mikeal rogers and adam christian of the cosmos web project(?) which is now the chandler server project.

so adam first is showing the demonstration of windmill testing the calendar feature of the chandler server -- showing automated testing of ajaxy drag/drop features, etc.  he points to a window that is open, calling it the 'windmill ide' which looks like.

requirements for the project:

    • run single test on all target browsers
    • easily debug tests
    • easily fit into continuous integration

why windmill?

    • needed to test heavy ajax application which changed dramatically
    • existing solutions (selenium) didn't fill all reqs
    • debugging/test authoring was difficult
    • CI integration was a pain
    • extending libraries wasn't easy

architecture... the service is completely written in python, ide is javascript and the test authoring library is anything.

what can be automated?

    • OOTB support for: open, click, check, radio, wait, type, doubleClick, select, dragDrop
    • all controller actions support a unified 'locator' to reference UI elements supporting xpath, link, name, id, and jsid (calls a javascript function which returns an element id).

the ide features:

    • multi-browser test recorder
    • multiple layers of support for perf info and metrics
    • DOM explorer (much like firebug, but multibrowser)
    • javascript shell (thank you mochikit)

service features:

    • extensible logging
    • 3 run modes: headless command line; shell mode; wx GUI
    • browsing launching and configuration
    • server level pre and post hooks for result parsing

these guys are working diligently on end-user docs and getting information out.  they know there may be bugs, and are hoping people use it and find them -- they are quick to respond right now.

adam is demonstrating this in action right now...recorder looks cool, ide looks good, they did a good job here, you should check it out!