# Wednesday, March 12, 2008
340lbs Open Source BattleBot Malfunctions Nearly Maiming Microsoft...

I have been at MIX and SxSW the last two weeks. Or rather, I used SxSW as an excuse to come down for Whurley and Giavonni's BarcampAustin. It was amazing - I've never seen a barcamp done that well. Austin, the city,  declared the day BarCamp day. It was cool.

I did have a near death experience though and the guys at Viewzi.tv caught it all on film...

From Whurley

All went well save one small incident involving a 340lbs BattleBot malfunctioning and then taking off as fast as it could for the closet Microsoft employees. Thankfully no one was hurt or injured and they were amazingly good sports afterwards:

Many thanks to the folks at Viewzi.tv for the amazing editing job. And, yes we still love Brady and TeamDX! Good luck in the new season on ESPN guys!

Modern day bullfighting???

340lbs Open Source BattleBot Malfunctions Nearly Maiming Microsoft... — TalkBMC


Tangent
Wednesday, March 12, 2008 1:47:53 PM (GMT Standard Time, UTC+00:00)  #  Comments [7] 

# Wednesday, March 05, 2008
MIX Day 1 Keynote Ray Ozzie

Ray OzzieRay Ozzie kicked off the MIX keynote by talking about the fantastic new things that have happened at Microsoft in the past year that are really re-engineering the DNA at Microsft from the acquisition of Aquantitive to the fantastic internal work with Silverlight 2.0 and IE8. As an employee in the trenches, it's often hard to keep focus on that big picture and remember that the company is aggressively self critical and self correcting. Another great step we are trying to take, that Ray touched on a little bit, is acquiring Yahoo!. It's interesting, but even in the field, I've seen that just the fact that we've made an offer has had a profound effect on a lot of people and is driving us into new and interesting directions. After that, he talk about the big picture and the directions that Microsoft is going with Services and Advertising and how that fits into the big picture of our S+S message. By Services, he's talking about software services in the Cloud (internet/network) rather than consulting services.

The next huge point that he talked about is the idea of software above the level of a single device. Our users are starting to leverage intelligent devices of all types from phones to desktops to cars in every part of their lives. We need to look at how to really leverage the strengths of each of these devices and platforms.

There are 5 buckets that we can think about these services in the cloud.

  1. Connected Devices
    • The vision here is that we will have applications and services that span
  2. Connected Entertainment
    • The vision here is that we would only have to license our software and media once and be able to use that across all of our devices from our music player to our desktop or car. This is a great
  3. Connected Productivity
    • The vision here is that we will have a seemless experience from the desktop to the mobile device to the web with Office Desktop, Office Mobile and Office Live (web based).
  4. Connected Business
    • The start of the vision is a set of services from online CRM, financial services, hosted exchange, commutation services and even hosted SQL Server with an elastic type cloud supporting it. The long game is enabling utility computing in the enterprise where people will virtualize more and more of their infrastructure onsite and in the cloud.
  5. Connected Development
    • We have a ton of different scenarios that we can code to with the same skill set of .NET and XAML across many different platform. That's exciting. 

Personally, I'm really excited to part of the company with an end to end vision that is as complete as the one that Ray was able to lay out today.

Technorati Tags: ,,,

Architecture | Microsoft | MIX08
Wednesday, March 05, 2008 5:58:36 PM (GMT Standard Time, UTC+00:00)  #  Comments [1] 

# Friday, February 29, 2008
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 VisitMix.com.

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



Friday, February 29, 2008 6:21:42 PM (GMT Standard Time, UTC+00:00)  #  Comments [4] 

# Monday, February 25, 2008
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.

*Key
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=\"http://schemas.microsoft.com/winfx/2006/xaml\">" +
       "<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>" +
    "</Storyboard>"

    var animation = control.content.createFromXaml(xaml);
    var root = control.content.findName("Page");  
    root.Resources.Add(animation);

    animation.begin();
},

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.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?



Monday, February 25, 2008 10:08:53 PM (GMT Standard Time, UTC+00:00)  #  Comments [0] 

# Sunday, February 24, 2008
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
shape.SetLineColor(lineColor);
//Set the line width
var lineWidth = Math.round(1);
shape.SetLineWidth(lineWidth);
//Set the fill color
shape.SetFillColor(fillColor);
//Set the info box
map.ClearInfoBoxStyles();
shape.SetTitle("<h2>Heartland</h2>");
shape.SetDescription("<div>Heartland District</div>");
//Add the shape the the map
map.AddShape(shape);
}

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 generated. That's a little annoying and I'm going to figure out the issue and post a fix soon.

Technorati Tags: ,,


Sunday, February 24, 2008 11:29:28 PM (GMT Standard Time, UTC+00:00)  #  Comments [2] 

# Saturday, February 23, 2008
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. 

clip_image001

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) myplaceofemployment.com - please read that and decipher as my first name is Josh, last is Holmes and I work at Microsoft. :)



Saturday, February 23, 2008 2:10:08 AM (GMT Standard Time, UTC+00:00)  #  Comments [7] 

# Thursday, February 21, 2008
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



Thursday, February 21, 2008 8:49:35 PM (GMT Standard Time, UTC+00:00)  #  Comments [2] 

# Thursday, February 07, 2008
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


Hardware | Tangent
Thursday, February 07, 2008 8:35:00 PM (GMT Standard Time, UTC+00:00)  #  Comments [1]