Open Space | MIX08

Open Space

I’m going to MIX! And hope to see you there but it’s sold out so if you’re not already coming, I’ll see you next year. For those of you who are lucky enough to have tickets, we’ve got a lot of stuff going on and I’m actually involved in helping run what I think will be the coolest part… Drew Robbins successfully lobbied for an Open Space at MIX. Then he reached out to me, Tim Heuer and Peter Laudati to help him run it. I can’t tell you how much fun this is going to be!

If you want to participate, not just attend, but contribute to the conversation – this is place for you!

Clipped from the Open Space site on

New to MIX08 will be an Open Space area where attendees control the MIX conversation. Open Space is a way to bring together groups of people interested in a common topic to have an interactive discussion. In an Open Space session, there may be an expert who is passionate about a topic presenting to an audience or there may be a small group of people discussing an idea.

Four principles of Open Space:

  1. Whoever comes are the right people to be there
  2. Whatever happens is the only thing that could have happened
  3. Whenever it starts is the right time
  4. When it’s over, it’s over

Schedule facilitation and conversation recording will be provided. All you need to do is suggest the topics and participate. Submissions will be accepted onsite in the Sandbox starting Tuesday, March 4th from 4:00pm – 8:00pm and throughout the event. The schedule will be updated each evening and posted to the MIX website.

I want to propose topics about architectural patterns in RIA, REST verses Soap, common keyboard conventions and why more Web Applications don’t follow them and more. And I want your thoughts on these topics! Come pitch in and participate in the conversation.

What do you want to talk about?

Open Space | MIX08

What’s Central Region (my new territory) on Silverlight?

Continuing my thoughts from when Dan Hounshell asked me what’s my territory in response to my announcement about taking on the RIA Architect Evangelist Roll. I started thinking about the Virtual Earth map overlay and thinking it’s really not rich enough. So I thought I’d spend 15 minutes or so and slap together a Silverlight visualization of the Central Region…

Much of the map I cribbed from the Silverlight Airlines application because it was easy… πŸ™‚ I did spend some time cleaning up that XAML to have actual state names instead of some bizarre path name. I’m keeping that XAML for a lot of future fun.

Blue == Heartland District
Green == MidWest District
Orange == North Central District
Red == South Central District

I thought about just coloring the states but then that would be boring so I wrote a little bit of JavaScript to create the animation on the fly, attach it to the root and starting the animation. That’s how I got the glowing style effect on the states.

ShowState: function(control, stateName, colorName)
    var xaml =”<Storyboard x:Name=\”highlightState”+stateName +”\” xmlns:x=\”\”>” +
       “<ColorAnimationUsingKeyFrames RepeatBehavior=\”Forever\” BeginTime=\”00:00:00\” Storyboard.TargetName=\””+stateName+
            “\” Storyboard.TargetProperty=\”(Shape.Fill).(SolidColorBrush.Color)\”>” +
            “<LinearColorKeyFrame KeyTime=\”00:00:00.0000000\” Value=\”” + colorName + “\”/>” +
            “<LinearColorKeyFrame KeyTime=\”00:00:01.0000000\” Value=\”Dark” + colorName + “\”/>” +
            “<LinearColorKeyFrame KeyTime=\”00:00:02.0000000\” Value=\”” + colorName + “\”/>” +
        “</ColorAnimationUsingKeyFrames>” +

    var animation = control.content.createFromXaml(xaml);
    var root = control.content.findName(“Page”);  


The other relevant code is the resizing code.

In the load, we create and add the transform to the root element that does a ScaleTransform (read resizing transformation). The other useful thing that this function does is that it wires up the resize event handler.

    handleLoad: function(control, userContext, rootElement)
        this.control = control;

        _silverlightControl = control;

        var rootCanvas = rootElement.findName(“Page”);
        if (rootCanvas) {
            _originalWidth = rootCanvas.width;
            _originalHeight = rootCanvas.height;

            rootCanvas.renderTransform = _silverlightControl.content.createFromXaml(‘<TransformGroup><ScaleTransform Name=”rootScaleTransform” ScaleX=”1″ ScaleY=”1″ /><TranslateTransform Name=”rootTranslateTransform” X=”0″ Y=”0″ /></TransformGroup>’);
            _rootScaleTransform = _silverlightControl.content.findName(“rootScaleTransform”);
            _rootTranslateTransform = _silverlightControl.content.findName(“rootTranslateTransform”);

       //Wire up onResize EventHandler
        _silverlightControl.content.onResize = this.handleResize;
        this.ShowStates(control, rootElement);

After that, we listen for the resize and do the appropriate math to scale the transformation to the right size. This is cool because as we resize the root element, it will automatically take care of it’s children for us.

handleResize: function(sender, eventArgs)
    // Capture the current width/height
    var currentWidth = _silverlightControl.content.ActualWidth;
    var currentHeight = _silverlightControl.content.ActualHeight;

    if (_rootScaleTransform && _rootTranslateTransform && _originalWidth && _originalHeight) {
        // Scale the root Canvas to fit within the current control size
        var uniformScaleAmount = Math.min((currentWidth / _originalWidth), (currentHeight / _originalHeight));
        _rootScaleTransform.scaleX = uniformScaleAmount;
        _rootScaleTransform.scaleY = uniformScaleAmount;

        // Translate the root Canvas to center horizontally
        var scaledWidth = _originalWidth * uniformScaleAmount;
        _rootTranslateTransform.x = (currentWidth – scaledWidth) / 2;
        // var scaledHeight = _originalHeight * uniformScaleAmount;
        // _rootTranslateTransform.y = (currentHeight – scaledHeight) / 2;

So, understand the central region’s boundaries now?

What’s Central Region (my new territory) on Virtual Earth/Live Maps?

Where is ... ?Dan Hounshell asked me what’s my territory in response to my announcement about taking on the RIA Architect Evangelist Roll. I thought about just typing out the response, but then I realized that that would be very un-RIA of me and it would, as many standard HTML pages do, fail to really help people visualize where I’m working.

The first one that I thought of was a Virtual Earth map overlay. I used to think these were hard until Larry Clarkin showed me how easy these were to do. I’ll be doing a lot of these over time as I start doing mashups for events and the like. The hope is to start doing a GeoRSS feed at some point that will have a list of events that I’ll be at, where to find registration and the like. This has been in the plans for quite a while, the questions where to host it and the like are interfering with progress.

However, for right now, I’m just going to do the simple layer over Virtual Earth to show you the Central Region.

This was relatively simple to do. All of the code that you need to get started can be found on the Interactive SDK which makes this the best documented API I’ve seen Microsoft produce.

This is the code that I wrote. Notice the “…” which means that there’s about another 20 lines of those to make the central region shape. The hardest part of this one was getting all the latitude/longitudes right. I didn’t get it perfect but it’s close.

function AddCentralRegion()
var fillColor = new VEColor(0,0,255,0.2); //Transparent Blue

var centralRegion = new VEShape(VEShapeType.Polygon,
    [new VELatLong(48.99989069893174, -104.04843181371691),//    North West Corner
    new VELatLong(41.0017229451484, -104.05321687459947),
    new VELatLong(41.00233021312762, -102.05171227455139), //KS NW Corner

    new VELatLong(49.38326680201004, -95.15361785888673),
    new VELatLong(48.998803197833915, -95.15284538269043)

    AddShape(centralRegion, fillColor);
    map.SetCenterAndZoom(new VELatLong(38.47939467327643, -90.087890625), 4);

function AddShape(shape, fillColor)
shape.HideIcon(); //Don’t need the pushpin
//Set the line color
var lineColor = new VEColor(0,0,0,1.0); //Black
//Set the line width
var lineWidth = Math.round(1);
//Set the fill color
//Set the info box
shape.SetDescription(“<div>Heartland District</div>”);
//Add the shape the the map

One small frustration was that I couldn’t figure out the JavaScript ordering and whatnot to get it to embed nicely in a blogpost. It really wants the call to load the map to be in the body’s onload call because that happens after the rest of the HTML has been loaded and rendered. That’s a little annoying and I’m going to figure out the issue and post a fix soon.

Technorati Tags: ,,

My New Position at the Central Region RIA Architect Evangelist

New logo for Ria

It really couldn’t come at a better time with MIX and SxSW coming up so soon. I’m moving into a new role as the Central Region Rich Internet Application Architect Evangelist. I’m leaving the Heartland in the VERY capable hands of Brian Prince. (See his announcement called Farewell)

So, what does that mean?

I’m going to be broadening my geography and focusing in on a technology stack. I’ll be covering all of the center of the United States with a heavy focus on Rich Internet Applications and partners.

In this technical and business development role,I get the opportunity to combine my passion for Rich Internet Applications and pragmatic business experience to help consulting shops, design firms and customers in their pursuit of the Microsoft stack in the web space.  That includes broad  responsibility for evangelizing the complete Microsoft platform with heavy emphasis on Silverlight, .NET Framework, Visual Studio, Expression, and ASP.NET AJAX. 


I’ve been asked by a lot of my friends that I’ve made over the past year at Microsoft if I’m abandoning Heartland and if they are going to see me again. This is the typical pattern where someone does well as an evangelist and then moves off to Redmond and nobody sees them again. That’s not the case here. I’m staying in Michigan. I’m not moving to Redmond and don’t have plans for for the foreseeable future. I am tightening my focus so I’m not going to be all over the District covering anything and everything Microsoft related. However, I will be heavily involved in helping grow the community and partners that are in my chosen technology stack. Actually, a lot of my job will be business development with my partners so I will be seeing (or at least communicating with) a lot of you a lot more often.

Most people that I’ve talked to have said that it makes sense for me as most of my posts and activities lately have been in this realm anyway. I’m just officially getting permission to follow my passions and do the work that I want to do. I’ll be working very closely with Chris Bernard, Don Burnett, Jeff Blankenburg, Larry Clarkin, Adam Kinney, Scott Barnes and more! It also means that I’ll get to more things like the Phizzpop Design Challenge only I’m hoping to bring my own flair to them now that it’s officially part of my job.

If you have any questions at all or would like to work with me on something, feel free to email me at myfirstname.lastname (at) – please read that and decipher as my first name is Josh, last is Holmes and I work at Microsoft. πŸ™‚

Technology Should Not Make You More Productive

Larry Clarkin... Larry Clarkin put up a post called “Technology should not make you more productive“.

When I first read this, I was stumped trying to figure out why one of the more progressive technologists that I know would say something that bizarre but as I read the post, it snapped into focus.

His opinion is that “Technology should not make you more productive, but it should totally change the way that you work”.

I couldn’t agree more. I think back on the way that I worked even a couple of years ago and how technology has transformed my outlook and way that I work. It’s no longer apples to apples comparisons. Tasks that used to take me hours or weeks to complete are either irrelevant or wrapped up in a single statement that I can delegate to something else. Think about the way that we write code these days verses yesteryear. I used to spend weeks and months writing data layer code, front end population of fields and the layout of the screens for even the simplest of applications. At this point, I wire up a fantastic ORM, such as NHibernate, SubSonic, ActiveRecord or any number of others, get the XAML form from a designer and wire the databinding in seconds. That allows me to largely ignore the “plumbing” code and focus on the business logic. I’m still writing the same number of lines of code a day, but it’s completely different code than I used to write.

I think about Cell Phones, SMS, Email, Twitter, TripIt, Dopplr, Plaxo and all the other technologies/applications that I use every single day of the year and it has completely transformed the way that I work. I used to be fanatical about getting someone’s email address. Now, I’m setting up most of the CodeToLive episodes through Twitter. At this point, if they are on Twitter, I often DM someone on twitter instead of trying to email them. At one point in time, that would have been over email. Prior to that, it was phone. Prior to that it was in person or not at all. πŸ™‚

But if you think back to other truly disruptive technologies, such as the boat, train, car, plane, rocket, transporter (wait – not yet but I’m sure that it’s coming), each of these have completely transformed our society. There was a time when getting on a boat for the new world meant a zero probability that you were going to see your family again. Most people lived within miles of where they were born because travel and moving meant giving up everything. Now in an age of jets, good friends and family stay in contact over XBox Live or Skype or Twitter on a daily basis with complete and total location independence. This is an exciting time as technology is starting to bring people closer together rather than pushing them apart.

I’m looking forward to the next technology that really revolutionizes our technology rather than incrementally improve what we already have.

What do you think it will be?

Larry Clarkin – Technology should not make you more productive

Rocking: Guitar Rising for Real Guitar Heroes

Transparent GuitarGuitar Hero for adults is coming!!! I really don’t want to knock Guitar Hero and Rock Band but they are just not for me. Honestly, (and this is not bragging, it’s just a fact) I’ve never played either one. If I’m going to spend the time to learn an instrument, it’s not going to be a plastic one that is only useful in the context of my living room. I completely get the social aspect to it and think it’s a great game in a party situation. I just don’t have the patience to devote to it to get decent enough to enjoy it in that party scenario.

I’m just really amazed at stories like this 9 year old kid on YouTube that is a Guitar Hero rock star. And his parents are proud enough of this fact to put this on YouTube. If only they could channel all that talent for good! If he had just started learning a real instrument – he could be the next Eric Clapton, Jimmy Page or Frank Iero! He’s definitely got dexterity and focus to do it – if he could be channeled correctly. Seriously, how does a 9 year old kid get to be that good at a video game? Oh yeah, I’m forgetting that it’s usually the 9-12 year olds that hand me my tail on a platter in Halo 3 or Call of Duty 4. Complete side note (which is weird as this whole post is a side note), I had a thought that we should have an “over 25” segment of the XBox live network, not for “Adult Entertainment” but rather as a way to even the playing field for us that have jobs, families and only a couple of hours a week to devote to gameplay… Thoughts?

When I was talking to Jason Follas and Dustin Campbell over beers just after Guitar Hero was coming out and all the hype had started up I had the idea that I’d really rather have a way to hook up a real guitar to the XBox and/or computer and “Play” to learn. We had talked through some of the hookup options, like pro audio cards that can take a real 1/4 in jack and all the sound you can pump at it or the 1/4 jack to USB options that are out there. Dustin is actually a good enough musician (Plays in a pro-band and the like) and programmer (tech lead on CodeRush) that I was hoping that I could talk him into doing it because he’s got the chops to do so. Didn’t work. He didn’t bite.

The fantastic news is that he doesn’t have to. Today, Jason pointed out that there’s a startup called Guitar Rising that is creating that “game” for us! They are planning to release sometime in 2008 – and I’ll be among the first to buy one. I’m really stoked! I’ve been wanting to learn guitar but with my fairly severe ADD I haven’t had the patience to do so. I really hope that they pick songs from all over the spectrum from rock to blues. Besides just being able to play, I’d really like to get to a point where I can play camp side and at sing-alongs. Obviously, that’s not all hair bands, there’s a lot of Jimmy Buffet and the like that’s needed. There’s already been twitter conversations about how the hookups are going to work, what type of guitars we’re going to hook up and more. According to the article, you can hook up via a USB hookup or even just a Mic. I’m assuming that they are looking for pitch and notes and that’s all they care about. That’s pretty slick.

Looking forward to playing Guitar Rising at the next CodeMash!

Rocking: Guitar Rising for Real Guitar Heroes


I woke up this morning to a very interesting email from Steve Ballmer conveying the fact that we had made a public bid to buy Yahoo! As I picked my jaw up off the floor, I noticed all of my standard news sources had it listed at their top story as well. This is cool because I had been working on a blog post about some of the REALLY cool things that Yahoo! has been doing.

image_thumb1 Yahoo has released the beta of their long anticipated Yahoo Messenger for Windows Vista application. I’ve been looking forward to seeing this application in the wild since I heard about it. This was actually a partnership between the WPF team at Microsoft and Yahoo to get this out. There are a ton of cool features liked tabbed conversations, a Vista Gadget to track friends and much much more. It hasn’t tried to be feature parity with the original Yahoo messenger, it’s a being unto itself.

I’ve had the good fortune to know Eric Burke from Yahoo who happens to be the technical lead on the Vista Messenger project. It turns out he lives in Novi, MI and manages a team in Palo Alto, CA. Guess how they do the majority of their communication… πŸ™‚ I met Eric on the plane to MIX last year. I was wearing a Visual Studio jacket and he was reading MSDN Mag so we recognized each other as fellow geeks. We hung out quite a bit at the conference and have stayed in good contact in Michigan since then. Eric was the guy that, when he saw the Silverlight 1.1 (now 2.0) keynote, said “Hey cool – I’m a mac programmer!”. At the conference, he was speaking about the challenges that they have faced with building one of the premier WPF applications and working with the design team from Frog Design.

Eric said that it was really rough in the early goings because nobody knew how this was supposed to go. Microsoft had a good story for designer/developer workflow but nobody had actually done it yet. The first couple of times they really couldn’t use what the designers had tossed over the wall or it required such drastic changes to their code that it was painful. As time went on, they figured out how to get along better and better so by the time that MIX rolled along, they were able to integrate changes often in as little as 3-5 minutes first thing in the morning. I’ve also had Eric come out to a couple of different events to speak about real world experiences working with WPF. One of the things that challenging right now is that there are not fantastic tools for looking at the XAML and seeing what the redundant layouts are or where the memory leaks are.

Since it’s gone public, it’s been interesting listening to people’s reactions to it. One of the common ones is a complaint that it doesn’t support all of the features of the mainstream Yahoo! messenger application and it’s add-in model. I actually like that about it. It’s refreshing to see a company take a line in the sand and not be 100% backwards compatible and feature complete with the legacy applications. This is something that Microsoft never seems to be able to do. There was a fantastic ad that showed VS.NET 2005 and it said “with 400 new features, the difference is clear” and right next to that add was an ad for Sugar CRM that said “Back with fewer features than ever, the difference is clear”. And it’s true, the IM clients that have been around forever are full of features that nobody uses or are used by a small enough percentage of the audience that they are more of a maintenance burden than useful features. Now, it takes a lot of moxy to say that “I’m willing to forgo some of the legacy customers upgrading to do the right thing for the future and the application.” I hope that Yahoo! sticks to it’s guns on not trying to make the Vista client feature parity with the old client as they go forward. Obviously there are things that they will need to add, like VOIP and some type of add-in model, but what form that takes is going to be interesting to see.

I don’t know if the deal is going to go through but I hope that it does just to get this type of edgy and exciting decision making into Microsoft. I know that Steve Ballmer and crew are looking at the advertising, search and social networking properties as well all of which are substantial. I was looking at my traffic searches on my blog and Yahoo! searches accounted for a really solid portion of my traffic. Obviously it wasn’t equal to Google but it was still substantial. We’ve offered them $44.6 Billion which is a decent premium on their stock price. According to the NY Times, Yahoo! turned down earlier merger offers so I’m also really hoping that this doesn’t turn into an ugly hostile style takeover.

Yahoo! Messenger for Windows Vistaβ„’

Microsoft Makes .6 Billion for Yahoo – Mergers, Acquisitions, Venture Capital, Hedge Funds — DealBook – New York Times

Microsoft makes unsolicited $44.6 billion bid for Yahoo – Feb. 1, 2008