| Comments

Ian Ellison-TaylorI’ve been watching Ariel’s blog for a while and really like the insight.  What is it? Microspotting, where she describes “Like the paparazzi, but for geeks.”

I would say similar to the core tenet of Channel 9, Microspotting has the intent of turning the looking glass inward to get some profiles of key individuals you might recognize within Microsoft.  What is great is that the story is augmented by another of Ariel’s talents: photography.  She’s pretty good and I’ve enjoyed the photos that accompany the profiles and stories.

From her site:

My name is Ariel and Microspotting is the place where I collect my photos and ramblings about the supposedly-Evil Empire and what it’s really like to work here.Now I creep around campus talking to my favorite kinds of people: geeks who are passionate about what they do.

Some of my favorite profiles:

I’m sure I’m not high-profile enough (or geographically desirable for a profile anyway), but if I was, I could see a photo shoot with massive beads of sweat rolling down my forehead as I lean against a saguaro cactus…or maybe just an office shot?

Anyway, it’s an interesting insight into not only developers, but interesting profiles into Microsoft culture.  Check out Microspotting.

| Comments

Well today (17 JUN 2008) will be the release of Firefox 3, a seemingly much anticipated browser update.  I checked out an earlier build (I think beta 2) and it was a nice browser.  I’m not a browser zealot, I use what works for me and IE works for me, has some tools that I like, etc.  Firefox is a fine browser as well and I do use some plugins from time to time in my Firefox install.

Today, I assume a lot of people will be downloading FF3 whether by explicit choice or by a prompt from their FF2 browser installs.  In fact, it appears that FF is going for a world record of software downloads.  Um, cool?  At any rate, the downloads will start soon (FF3 is already on public FTP servers now).

UPDATE (02 JUL 2008): See updated information here on specific silverlight.js update instructions.

So what does this mean for Silverlight?  Well, there has been an issue with Silverlight and FF3 getting along since the first public builds of FF3 started trickling out.  There has been a couple of issues, but two main nagging ones.  I’m not going to go into detail here, but there is certainly an interesting read in the bugzilla comments and a commentary here from Jon.  My personal opinion is that there was some disagreement in the Mozilla core team about if indeed it was a bug or not…the comments are an interesting read and I think the MSFT team made valid arguments (the other issue is here).  The nutshell version is that there was an apparent change in how NPAPI model was implemented in FF3.  Despite the back and forth in the bug report, Microsoft has made some servicing updates as well as SDK updates that make FF3 and Silverlight play nice together.  There still seems to be some broader concern over the FF3 implementation (as there were a number of plugins that stopped working as well), but at least a level of work around has been established for Silverlight.

The main concern really has to do with some install experience and initiation of the Silverlight plugin.  The latest SDK includes an updated Silverlight.js file with the necessary fixes in script detection that works with FF3.  You can get the SDK as a part of the Silverlight 2 SDK downloads.  This doesn’t mean that you have to immediately upgrade Silverlight 1.0 applications to v2, but just that the update is in the Silverlight 2 SDK.

Another item that was fixed (added) was removing the step to restart the browser in these instances as well – these are the same techniques as demonstrated in one of my latest videos on optimizing the install experience.

So if you are a Silverlight site author and anticipating a lot of FF3 usage on your site, you should indeed get the latest SDK for Silverlight and update the detection script and do some testing.

| Comments

The team att AppDev is providing a free learning CD-ROM for Silverlight 2.  They are providing it as a CD-ROM or download and said it represents a $115 value for their training…but are providing it now for free!

If you are familiar with MSDN Magazine, ASPNETPro, and other online/offline publications, the name Dino Esposito might sound familiar.  Dino is the one providing the training walkthroughs for you in this offering.  It includes roughly 3 hours of training on Silverlight 2 content.  Get it now!  Thanks AppDev!

UPDATE (30 JUN 2008):
The team at AppDev has heard some feedback and has altered their offer.  Using the same link, the offer is now for the first 4 modules of Silverlight training.  Additionally they have expanded the international distribution to the countries that can legally receive it -- this does not mean everyone unfortunately, but it does provide expanded scope.  AppDev takes feedback seriously and wanted to make sure as many people could take advantage as possible.

| Comments

I just received an email from US Airways (my preferred airline) in my inbox…here’s an excerpt:

It's no secret that the airline business is facing difficulties of unprecedented proportions; and 'unfortunately
US Airways is no exception. Surviving high oil prices is going to require some substantial changes to the way the industry is run. Today, we announced a series of changes designed to prepare our airline for these new ways of doing business.

Specifically, we announced changes to domestic capacity, the Dividend Miles program and our overall business model. We're transforming our business by initiating a 'pay-for-what-you-use' model for items like baggage and beverages. We're also making changes to the Dividend Miles program that you should know about.
Among the changes we announced today, we will:

    • Assess a $25, $35 or $50 award processing fee (depending on where you travel) for award tickets booked on or after August 6, 2008.
    • Introduce a first checked bag fee of $15 for tickets booked on or after July 9, 2008. As a Preferred member, you and anyone traveling on your reservation will be exempt from the baggage fee.
    • End Preferred bonus miles for travel booked on or after August 6, 2008.

I knew this had to be coming.  American was the first to charge for baggage and then others (including US Airways) indicated they would stop serving snacks.  I expect that the free drink services will transition to a full charge service shortly as well. [UPDATE: wow, I didn't click through the email until now -- they will charge for soft drinks--$2!]

Now before you comment about “US Scare” or “America Worst” I realize that the airline is not without faults.  In fact on a recent trip to New York, my baggage was lost (which included my suit for a wedding I was to attend the next morning).  I was livid.  As an exclusive traveler on US Airways (I’m not a huge traveler, but did clock 170K miles last year on the airline) I felt the way I was being treated was horrible.  My initial compensation offer was $25/ticketed passenger.  I eventually got this to $250/ticketed passenger which met our needs until our baggage was found (2 days later and at the end of the trip).  During this time I reflected on the airline.  I could have easily said that US Airways sucked horribly and I would never fly them again.  There were other situations on that particular trip that could have easily swayed me that way.  But I realized that no airline is perfect.  Especially calculate that with each airline is actually interfacing with other staff in hundreds of airports across the world, it isn’t always in complete control of the situation.  But I came to one conclusion during my anger toward the situation.

Given all that is happening with the airline industry the customer service group and how it treats its customers is the most important part of the business and should be given 100% budget and attention. 

You see it isn’t the crap that happens (like lost luggage) that makes you a bad or good airline (or any other company for that matter), it is what you do in those situations that defines you as an organization.  The airlines claiming all these price crunches, gas prices, etc. need to refocus on customer service…because right now since I have to pay for a ticket and pay to bring clothes with me on my trip – the only differentiating factor in the industry is how I’m treated as a customer…all other things to me are now equal.  My preferred airline program now is barely yielding me benefits it initially promised.

This brings me to a thought on this whole baggage fee thing got me and my wife talking.  Specifically she asked why they don’t just raise ticket prices.  And I agree.  You see, charging for checked baggage I think has negative effects in a few places:

    • It will encourage people to carry-on which will lead to even more dis-satisfaction (DSAT) because you’ll now have even more crowded overhead space.  What will happen if I run out of space and have to check?  Is the gate agent prepared to accept a transaction fee at the gate?
    • It makes customers feel unhappy and feeling targeted as consumers to excessive fees…we look at it as double-charging us.

But on the other side I get it.  You see US Airways couldn’t have just raised their fares.  Well, they could have, but it would likely have even more a negative effect on their business bottom line.  Why?  Because we as consumers are irrational.  You see, when we (most of us, so if you are an anomaly, disregard :-)) book airfare, we’ll search for airlines and see that PHX-EWR might be $200 on US Airways and $200 on American.  Great, they are the same so we’ll book with our preference.  But if US Airways raised their price, then it would be, for example, $215…we’ll look at that and say that American is cheaper and book that ticket…not realizing that American will still charge us $15/bag checked.  You see unless all airlines raised their fares, then everyone is trying to play by the same sneaky rules.  US Airways is raising their bag fees because it can’t raise the fares or would be less competitive on fares.  We consumers don’t mentally take into account fees until after the purchasing decision has already been made.  It’s lame, but true.

But instead of trying to change the industry and just being honest – raising fares – the airlines are taking these fees in a way to disguise the fares (which are probably being raised anyway) remaining the same.  This is happening, however, at the DSAT of the customer.  I mean, c’mon – how many of you are reading into baggage fees and saying Are you kidding me?  I have to pay to bring my [clothes] now?  Ridonkulous!  I hope that the geniuses at the airlines know what they are doing…I don’t think they do.  Consider the email above.  What if it read something like this:

Let’s face it, the economy isn’t the greatest right now.  You likely have an automobile, were you happy the last time you put gasoline in your car?  Neither were we.  US Airways is faced with these same economic pressures as you are and unfortunately we’ve had to make some tough decisions.

We could have easily said we’re going to charge you to check your baggage or stop feeding you the small snacks that we provide, but we figure we’d be more honest.  We are likely going to have to raise our fares in most situations.  This is not an easy decision to make, but a necessary one in the current environment we are faced with.  We felt it would be better to be honest with you rather than assess new fees for baggage, etc. that would cause more trouble during your travels.  We want you to have the same travel process as you always have done and not interrupt preparation for your business trip, weekend getaway, or family vacation.  We want your flights to continue to be as smooth as possible, enjoy the same service you’ve been accustomed to with US Airways on the ground and with the in-flight service.

We’re sorry about this and as one of the nation’s largest, low-cost airlines we strive to continue to provide the best service.  We hope that you will continue flying with us as we’ll do our best to put YOU first.

Now, I’m not sure if that would have changed your mind, but had I received that, it would have been refreshing honesty.  “Hey, we need to raise rates…we don’t want to, but are going to have to to remain in business and provide the service you expect.”  That’s the message I want to hear.  Instead I hear “We’re not creative enough to think otherwise or bold enough to try to change the industry thoughts, so we’re going to charge you $15 to bring your bathing suit with you on your trip to San Diego.  Enjoy suckers.”  Here’s a suggestion of reducing costs instead of charging me to bring my underwear:  Get rid of those credit card peddlers in PHX.  It’s annoying and not adding value to the brand of US Airways!

It sucks.  The industry is really not being smart.  They need to get creative.  Think hard on putting the customer first while still surviving in a highly competitive industry.  Changing your fees only is NOT differentiating yourself.  US Airways now to me is no different than anyone else.  In fact Southwest is looking more and more attractive and for me is a decent alternative flying out of the southwestern United States.

What do you think?  Maybe Doug Parker will read this and respond?  Doug?  Are you listening?  Have you really thought different?

Suggested reading:

I hope it gets better…soon.

| Comments

I’ve just finished updating my modification of Joel’s original concept.  Joel had a really great base for me to build off of and used styling and templates to create simple controls for a standard Silverlight media player that could be embedded.  I took his sample and made some minor adjustments to accommodate automatic sizing as well as make it a bit more parameter-driven.  The end result was (what I think at least) a fairly nice player that could be flexible if needed:

Joel made great use of styling primitive controls to be able to leverage core functionality rather than building it all himself.  One of those controls used was the ToggleButton (the play/pause feature) which makes sense for the implementation.  In the beta 1 version of styling we were able to use different styles for MouseOver states for checked/unchecked features.  A snippet of the styling XAML looked like this:

<Storyboard x:Key="MouseOver Unchecked State">
    <DoubleAnimation Duration="0:0:0.1" Storyboard.TargetName="playSymbol" 
Storyboard.TargetProperty="Opacity" To="1" /> <DoubleAnimation Duration="0:0:0.1" Storyboard.TargetName="pauseSymbol"
Storyboard.TargetProperty="Opacity" To="0" /> </Storyboard>

This worked fine in beta 1.  Beta 2 introduces the VisualStateManager model which is an exciting new feature for developers and designers.  Opening the video player project in the latest tools had some things blow up for us…no problem, let’s make use of VSM to change the styling implementation.

One problem…the ToggleButton no longer supports MouseOver states specifically for Checked/Unchecked as we’ve implemented in the video player.  My first thought (and a few emails to the team) was to inherit from the ToggleButton and do my own implementation, adding those states into the control.  I was able to do this by creating a new class file in my Silverlight project, then inheriting from ToggleButton and a few overrides.  I first wanted to support VSM so I added the appropriate TemplateParts to my class:

[TemplateVisualState(Name = "CheckedMouseOver", GroupName = "CheckStates"), 
TemplateVisualState(Name = "CheckedMouseOut", GroupName = "CheckStates"), TemplateVisualState(Name = "UncheckedMouseOver", GroupName = "CheckStates"),
TemplateVisualState(Name = "UncheckedMouseOut", GroupName = "CheckStates")] public class ToggleButtonEnhanced : ToggleButton {

This worked fine and they showed up in Blend designers as well for me to implement.  I then chose to override the MouseEnter/Leave events and did something quick like this:

protected override void OnMouseEnter(MouseEventArgs e)
{
    base.OnMouseEnter(e);
    if (base.IsEnabled)
    {
        if ((bool)base.IsChecked)
        {
            VisualStateManager.GoToState(this, "CheckedMouseOver", true);
        }
        else if ((bool)!base.IsChecked)
        {
            VisualStateManager.GoToState(this, "UncheckedMouseOver", true);
        }
    }
}

Fair enough right?  Well it appeared to be working.  The problem was that ToggleButton maintained a Normal state that was conflicting with certain scenarios I had in my implementation.  You see the base.OnMouseEnter() was essentially the rathole here.  Some spelunking showed that when a state changed it actualy went from the desired state, then back to ‘Normal’ – for example the Pressed action wend: MouseOver,Pressed,Normal.  The final transition was causing my problem.

Now I was looking at overriding the OnApplyTemplate method and thus virtually having to re-implement all the other state transitions as well.  Now I’m no longer really getting a huge benefit out of my inheritance.  So I went back to some experts for some advice.  Dave gave me some pointers and we chatted about the implementation and desired outcomes.  Dave’s much smarter than me on VSM, well, because he had to implement it :-).  For my particular scenario he pointed out that I really had only one property that was changing in the MouseEnter/Leave events: Opacity.  So why not just change Opacity for the Grid container rather than worry about the elements.  Duh.

So now I no longer needed my custom ToggleButton, but could use the primitive ToggleButton to do my dirty work.  I implemented the MouseOver, Checked, and Unchecked states is all I really needed to manage my transitions.  A few learnings about some things I was doing wrong and boom, the new player works as expected.

I learned a few things in this quick journey through VSMville, and one was that it was pretty easy to implement a custom control to support the VisualStateManager model as well.  I think I’ll be digging into this one deeper soon.

Hope this helps someone!  Here’s the code for the updated Video Player.  While the ToggleButtonEnhanced is not used in the final implementation, I kept it in the code file so you could see what path I started along.