All posts by joshholmes

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

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?

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

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. πŸ™‚

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

Yahoo!

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

CodeMash Conference – January 10-11, 2008

codemash logoCodeMash was, once again, a huge success. For those of you who don’t know, it’s a cross technology, cross platform, cross discipline that is help in January in Sandusky, OH at an indoor water park. The meme is that we are there to Mash not Bash. Everyone is expected and encouraged to go learn about new technologies and bring new and fresh ideas back to their own shops and technologies.

We had 375 people show including attendees, speakers, sponsors and so on. That’s a big growth over last year. It’s big enough that we are trying to figure out what to do next year with marketing because we’re not sure if we’d loose the vibe and the close contact that the 375 person conference affords.

CodeMash 020It was a much more mature vibe this year than last year. In it’s inaugural year (2007), it was interesting hanging out at lunch, dinner and the bar at night meeting new people and making new friends. However, on the first night there was a lot of trepidation and anxiousness as people were really unsure as to how or if they should really talk to everyone else. By the end of the conference there were interesting conversations happening between the PHP, Python, Ruby, .NET and Java guys. Brian Prince and I even shaved our heads as an incentive to get people to blog about the conference.

This year, on the first night there was an established context for the conversations on the first night. By the end of the conference, people from all technologies and disciplines were exchanging email addresses, Twitter accounts, Facebook IDs and more. It’s truly amazing how this little conference has started a cultural brush fire. The only blocking issue is the UM/Ohio State rivalry… πŸ™‚

Even new comers to the conference such as Scott Hanselman noticed the vibe of the conference

‘It’s a cross-platform, cross-cultural, cross-language conference with a very positive vibe. The “vibe” or general feel of a conference matters more than you might think. I started out asking folks “are you a Ruby person or a .NET person?” but soon I got with the program and started asking folks “what are you working on?“‘

Steven Harmon described the conference well when he called it the “biggest-little-conference around’. The type of person that CodeMash attracts is that top developer who is fascinated by technology and is desperate to expand their horizons and learn more. It’s not surprising that great consulting companies like Quick Solutions and SRT Solutions are at the very center of the conference doing much of the heavy lifting organizing and running the conference.

Another big thanks goes out to Chris Woodruff who did a ton of podcasting from the event. He even interviewed me here. I haven’t had a chance to listen to the podcast yet but I remember rambling on forever. I know – you’re shocked that I had a hard time shutting up…

imageIn true CodeMash fashion, I did a talk on the DLR based on the great work by Jim Hugunin and John Lam. I covered a little bit of IronPython and even did demos with IronRuby. I ran out of time before I did all the demos that I wanted to do, like doing WPF with IronRuby, ASP.NET with IronPython and so on. It was great, however, to have Joe O’Brien in the room to help me with the semantics of Ruby and dynamic languages. Joe O’Brien is a guy that I met last year at CodeMash and we’ve since become really good friends and are working on getting together on eRubyCon (The Enterprise Ruby Conference). Hopefully I’ll see you there this year. It was a fun conference last year with a very CodeMashish type vibe. I’m really hoping that we get to do another fishbowl style talk at some point there.

 100_6129Oh and did I mention that they doubled the size of the water park? πŸ™‚ My one regret this year was that I didn’t book over to Sunday with my family. the past two years my family has joined me on Friday evening and we’ve stayed until they kick us out on Saturday. Next year, I’m booking over to Sunday! I didn’t spend nearly enough time at the water park. Some of the guys (Yes, I’m talking about you James) went to the water park every day for multiple hours.

Plans for next year, I’m going to continue my work with the DLR and hope to have a much more advanced talk that includes Silverlight 2.0 and maybe even a demo on Moonlight. I’m also planning to spend more time at the water park on Day 0 and on the weekend. I have a hard time spending the conference time at the park because there are so many cool sessions and people to talk to.

I’m going to do more podcasting. I really missed an opportunity here and only caught one interview with Joe Brinkman  about DotNetNuke and working on an Open Source Project full time (check out http://www.codetolive.net soon).

I’m going to spend more time at the water park… πŸ™‚

And hopefully, I’ll see you there!

CodeMash Conference – January 10-11, 2008

Phizzpop Design Challenge Austin

This past week, I had the privilege to be involved with the Phizzpop Design Challenge in Austin. I was called in by Chris Bernard as a technical mentor to the contestants who needed help and to help him run things on the night of the presentations.

What is the Phizzpop Design Challenge?

Let me back up here and explain what the Phizzpop Design Challenge is. Phizzpop, the new Microsoft center for design excellence, sponsored a design challenge focused on the designer/developer workflow while solving an experience design problem. They invited a number of different design firms to compete in regional competitions, 36 teams total took them up on the challenge. The winners of the regional challenges go to South by Southwest to have a showdown to determine the national winner. The challenge itself was send at least 2 but no more than 3 of your “A” team to design and build a solution for a problem in 2.5 days. At the end of that they publicly show their solution in front of a large crowd and importantly a panel of judges. To help them out, there was a 2 day training class in Expression Design, Expression Blend, WPF, Silverlight and so on. Additionally, they provided me and a number of other resources from a technical end. The goal was to make sure that the technologies were not a blocking issue to success for the teams. I was completely amazed at the mad design skills that each of the teams brought to the table. Those of you who know me know that I couldn’t design a handkerchief so my opinion is not the one that matters. πŸ™‚ However, Chris Bernard and everyone who saw the finished products were really impressed with the quality and completeness of the designs across the board.  

What was the design problem?

Each of the regional events had their own design problem. I really liked the one in Austin as I really enjoy independent films and social media. There’s an independent film distributor called Microcinema out of Houston that does local viewings/film festivals called Independent Exposure around the nation at coffee shops and the like. They want to reach out beyond their local viewings which are expensive to set up, market and run using all the technologies that are available. There were three personas that were involved including a college film student, an artsy non-technical wanna-be bohemian who’s married to a doctor and a social media junkie/job recruiter. The designs had to satisfy all three of the personas to be complete.

The teams were judged equally on:

– Satisfaction of Constituent Needs: How well does the needs of the constituencies as defined by the profile? Is the experience appropriate for the audience? How elegant is the experience?
– Satisfaction of the Market: How well does the solution address the market needs? Will the solution work across all of the identified constituencies?
– Uniqueness of the solution: Is the solution unique, differentiated and defensible?
– Technical Excellence: Was the team able to build a working solution (however limited), or is it purely a scripted prototype?
– Aesthetics: How visually appealing is the solution?

There were also bonus points available for integrating with the Live services and overall creativity.

Who were the teams?

In the order that they presented their challenges:

image 
Telligent – The guys that produced Community Server and they’ve recently started up a real design practice. They obviously have great experience in web applications, social media but I hadn’t seen a ton of their design work outside of their templates for Community Server. I have always liked their templates that are on top of Community Server – in fact, I’m really hoping that they will leverage that same experience to design some templates for Sharepoint too.
image
Frog – The largest and most established firm in the competition and clearly the favorites. These guys being involved proved interesting because many of the other firms were composed of graduates of Frog and it really raised the level of competition. 
image
Projekt202Young and hungry firm. I had the least amount of interaction with these guys but they were fantastic.
image
PoplabsThese guys are are media experts that really brought a different perspective to the table. It was unfortunate that they were plagued by hardware problems. It didn’t help that this was the first of these type of challenges that they had been in. They had some great ideas.
image
Thirteen23The firm that was at MIX and build the application called mixME in 8 hours with many of the same team members. Check it out, it’s a fantastic showcase. I knew that they were going to bring their “A” game and had high hopes for them.
image
Neudesic – I heard about this firm literally last week when I found out that Sam Gentile had joined them to help them run their connected systems practice. But I didn’t know that they had a design practice, in fact a lot of people didn’t know that as they started their design wing 6 months ago.

How did I help?

Phil Wheat and I were onsite during the entire build process for the teams as technical resources to make sure that the technology was not the blocking issue. We had a number of interesting questions that were tossed out over the 2.5 days that ranged from relatively basic (Very few of these) to “holy cow, what am I a ninja?” hard technical questions. The best ones were the ones where they were butting up against the technical limitations of the technologies involved. My favorite question was one where they were trying to dynamically set the ZIndex of a control. We scratched our head over this one for a while. I called in favors from a number of guys ranging from Scott Barnes to Jeff Blankenburg who looked at the code remotely and scratched their heads over it as well. It looked right and it wasn’t throwing an exception but it wasn’t doing the right thing.

            this.SetValue<double>(Canvas.ZIndexProperty, ZIndex);

The issue, as one of the contestants from another team figured out and revealed in an true spirit of sportsmanship, the issue was that it needed to be setting an int rather than a double.

            this.SetValue<int>(Canvas.ZIndexProperty, ZIndex);

I thought that this was wild and broken that it doesn’t throw an exception when you pass in the wrong type like that.

There were other questions like how to do a particular type of animation. When doing logic, XAML and the like – I knew how to help with most of those. I had an issue, however, when they started getting fancy with the animations, like trying to use Ease Splines. In that case, I had to call in the expert help of the editor for Phizzpop, Don Burnett. At one point, I had Don on speaker phone and watching what we were doing with LiveMeeting and giving us direction. That was cool and I learned an amazing amount. Don helped a ton throughout the couple of days.

How’d the build go?

All 6 teams brought fantastic ideas to the table. There were obvious ideas that all of the teams centered around with integration into current social media like Twitter, Flickr and FaceBook. I was really impressed by some of the originality shown by some of these ideas like Neudesic allowing Facebook members to share movies with their other friends. Several of the firms had the idea to bring in time-lined comments from Twitter.

The different firms displayed different ways of working. I actually didn’t even see Frog or Projekt202 until the night of the challenge as they just worked out their home office. They were allowed to ask their other team members for ideas on the design but not for help with the implementation. I saw Thirteen23 on the first day as we had a number of assets that they were allowed to use, like videos and images from Microcinema that they needed to copy. This was really the only downside of the whole experience. I would have loved to have seen the process that these fantastic design firms used. I did get to watch several of the firms.

Neudesic actually worked out of the room that I was hanging out at to be available the entire time. They had three team members, two devs and a pure designer. It was great to watch how cohesive they worked together. For the 2.5 day build, they set up a team site and source control. They almost did TDD, Continuous Integration and everything but they quickly realized that they were not going to be maintaining this code beyond Friday because whatever they build would be considered a prototype and would be tossed if they ever went forward with it. They sat down and started hammering out a design and as soon as they identified components that they were sure that they were going to need, one of their team started building those. The others kept on until they knew the services that they needed and the other dev started on those. The designer started creating assets and they started sticking those assets on the components and then stared wiring those components up to services. It was fabulous to watch. They had, hands down, the most completely implemented and least vaporware solution that was presented. However, it was a design contest and their design was good but it wasn’t the best. I, personally, have a tremendous amount of respect for the Neudesic team and feel comfortable recommending them as the UI team for anyone. The questions that they asked were definitely cutting edge and showed they were pushing the technologies (Silverlight 2.0, WCF and so on) to the limit. The only one that they were really stumped on was a cross domain issue where they were calling services on a different domain which is not allowed in the current release. It’s coming, but not hear yet.

I also got to see Telligent a few times when they came in to ask questions and get a change of scenery from their hotel room that they were working out of. The questions that they were asking were where they were pushing the limits of Silverlight and they just needed clarification on where the boundaries were.

I spend most of my time with Poplabs. As I said, they had a lot of hardware issues. They had two machines, a mac and a dell, just die on them. They had issues with installation of the software needed onto a third box. And so on and so forth. They finally really got to the implementation on Friday morning. At 4:00, they realized that what they had was really not going to get the job done. Toya D., their designer/dev, took her box off to the venue and sat down to start over from scratch. In 3 hours, she threw together a fantastic working demo that was at least as much of a working demo as some of the other teams. Her team mates sat down and started working on a slideshow for the judges to show the rest of their idea that wasn’t going to be completed. It turned out that all of the teams, besides Neudesic, had this type of an presentation – some implementation and a lot of presentation. I was really impressed with her skills from a design and implementation perspective – especially given that she really cranked out the final product in about 3 hours.

How was the Party?

For the presentation portion of the contest, Chris threw a heck of a party at J Black’s. First of all, the food and drink was fantastic. There were 3 HD projectors showing off the fantastic designs that every came up with. There was a DJ with a pretty cool rig. It was an Ion IDJ iPOD DJ Mixer. He had two iPod’s hooked up with all of his music and did the whole party from there.

The official program started with presentation from Steven P. Anderson about what designers are and what they do. He really did a fantastic job of setting the stage and helping the audience, not all of whom were familiar with the practice of design, understand the underpinnings behind the competition.

Then Chris introduced the judges:

Erica O’Grady – Social media consultant, designer/developer in her own right, creativity coach and all round fun gal to hang out with.
Norm Cox – Design legend. Started with Xerox and has run his own firm since 1982.
Todd Wilkins – Design Researcher with Adaptive Path. He was a last minute serendipity. One of the judges had recused themselves as they personally knew the members on one of the teams and out of the blue Chris found out that Todd had just, and by just I mean on the same day as the competition, moved to Austin from San Francisco.

Then Chris introduced the design problem and we got started showing the final products in the order above. There were a few gut check type technical problems, like one of the teams not having a Firewire cable with them and their entire solution on their external drive that they couldn’t access without one. Fortunately, we found a USB 2.0 and a Firewire cable for them to try. Other than minor issues like that, all of the presentations went well.

What was the result?

The three judges all came out and said flattering things about all of the teams. In fact they said that none of the judges completely agreed on the top 3 and that every firm was in at least one of the judges top 3. That’s an impressive fact and really goes to show that all of the teams did a great job.

However, only one team can win. In something of an upset, Thirteen23 came out on top over the top of the some of the larger firms. They brought together design, function and implementation not only with the expected technologies but in their spare time they threw up a live service and invited all of the contestants to hit it with their iPhones to watch a movie as well. It was really impressive. They are supposed to work with Chris this week to get their implementation posted to the Phizzpop gallery and I’m sure that they will show it off in their labs as soon as they get done celebrating their awesome victory.

Who’s going to the finals?

AQKA, San Francisco Winner
Create the Group, New York Winner
Clarity Consulting, Chicago Winner
Cynergy Systems, Los Angeles Winner
Outright Interactive, Boston Winner
Thirteen23, Austin Winner

Wanna keep up?

First, check out Chris Bernard‘s blog as he’s posting a  lot of the follow-up information there.

Second, go out to Phizzpop and register a profile to get notifications for the upcoming challenge and other great events that are popping up around the nation.

Last, if you possibly can you should register and attend SXSW to watch the big showdown in person.

Alt.NET Leadership Summit

Alt-Tab Pedal“My dream is that the next evolutionary leap in software development, on the magnitude of continuous integration, comes from the .NET world.” John Kordyback – Alt.NET Leadership Summit 2007. This is a huge challenge that he laid out at the summit meeting this past weekend.

I’m actually sitting on the plane on the way home from this same Alt.NET Leadership Summit and collecting my thoughts. I’ll be honest and say that it was a very interesting ride throughout the day. I came in with very few real expectations as to what was going to happen or what was going to be talked about. I knew that one of the core missions of the weekend was to decide on how much “leadership” this movement needed. Secondarily, and part of the reason I was there, everyone wanted to figure out how Microsoft can be involved or if it should be. Lastly, there’s been a lot of criticism lately around a negative vibe that some people are getting out of Alt.NET.

Who was there:
I came on the invitation of David Laribee. I know that the other guys that were invited from Microsoft were guys like Scott Guthrie, Scott Hanselman, Peter Provost and John Lam. I’m honored to be included on that fantastic short list.

I already knew David, Scott Bellware, Ray Lewallen, Don (XML) Demsak and Rod Paddock (Who didn’t make it). I also knew Peter Laudati (Developer Evangelist out of NY) and Dani Diaz (Developer Evangelist out of Philly). I had met Martin Fowler once or twice but we had never really had a chance to sit down and talk.

I didn’t know but got to meet Mike Roberts (who created CruiseControl.NET), Brian Donahue (who’s starting the first Alt.NET User Group in Philadelphia), John Kordyback (Currently working for Thoughtworks and one of the key guys for the relationship between Thoughtworks and Microsoft), Luke Melia (Who is actually going to work at a new startup on a completely Ruby on Rails application), Wendy Friedlander (token female – :), frequent speaker and Agile pairing expert), Jeremy Miller and Stephen “Doc” List (Open spaces facilitator and dubiously Scott Bellware‘s boss). I also didn’t know the other Microsoft guy, Glenn Block (Working currently on the Smart Client Software Factory for Patterns and Practices). It was amazing to be sitting in the room with all of that brain power.

Summary thoughts on Alt.NET

The first thing that I need to put out there is my thoughts on what Alt.NET is. David Laribee wrote the original 4 pointsMartin Fowler said it really well when he said that “Alt.NET is about strengthening the .NET Ecosystem and therefore the .NET platform”.

Alt.NET, to sum of the discussion this weekend in a gross and barbaric way, is about Alternatives In .NET not Alternatives To .NET.

ALT.NET Tools BoardWhat it’s not:
Alt.NET is not anti-Microsoft. The whole crew, by and large, was very pro-Microsoft and supportive of .NET and Windows. Not necessarily Vista, but Windows in general.
Alt.NET is not about a particular toolset even though it happens that many of the members use the same exact toolset. It’s a philosophy grounded in many of the things that Agile community embrace. The tools that they choose are tools that either really help them follow that philosophy or at a minimum don’t get in the way.
Alt.NET is not a group. It’s a movement of which there are many members in many different circumstances.

What is is:
First and foremost, it’s about raising the bar in development shops in the .NET world. That’s desperately needed. There’s a lack of knowledge of how to and/or desire to build truly great software by the majority of developers in the world. I’m not the first person to say this nor will I be the last. Jeff Atwood recently posted about the “80/20” rule where 80% of developers are 9-5 clock punchers and the other 20% are trying to better themselves through many different educational means, like reading blogs, magazines, books, attending conferences, training classes and so on. But across the board there is a lack of knowledge of the fundamentals. Recently I was talking to a developer who had deep knowledge about specific technologies but it started to become apparent that they lacked the fundamentals like Object Oriented (OO) programming. This is one of the points that I think that I brought to the table this weekend that resonated with people. Many of the Alt.NET guys are concerned about teaching Agile, TDD, Object Relational Mappers such as NHibernate and so on but we really need to start even more basic than that and make sure that there’s a true grounding in the fundamentals before the rest of it matters.

Second, the way to raise the bar in development shops is to raise the capabilities/skill/knowledge of the developer through a grounding in Agile practices such as TDD and best practices such as continuous integration. This is counter to adding slicker tools that drag and drop and perform magic that not all users understand and nobody can automatically test.

So back to this weekend’s summit.

One of the key take-aways for me was the crew that was present are really the passionate about getting this movement off the ground and jump started more than they are being dictatorial leaders. It’s great that the everyone there got that. This movement is larger than they are it’s it’s larger than the sum of the parts. There was discussion in the first session that I sat in on about the fact that this person or that person was “on the sidelines” and so they shouldn’t be allowed to talk about Alt.NET because they weren’t in the “club”. This was very quickly quashed by a 8-1 margin (9 people in the room) voted by everyone virtually dog piling on the 1 and consensus was reached. It’s far more important that people are starting conversations around the philosophies that Alt.NET hold near and dear than it is to be involved in the group. It was also discussed that it’s important to get that right and that you shouldn’t be talking about XYZ topic unless you really and completely get it. Mock objects were one of the examples of this – unless you truly understand mock objects, you shouldn’t talk about it. I personally disagree a little bit on this. I think it’s more important that people are starting to have those conversations than it is that they get it right first shot out the ga
te. The more people that are aware of it and are attempting to leverage the tools the more likely we as an industry are to get it right. For example, I’ll be honest and say that I’ve not done a lot of pure agile development and I’ve never done a production system with a pure TDD approach. However, I’ve had an epiphany when I finally caught on that it’s not about the tests. It’s about designing the code. Once I got that the lights came on and I became a believer. The tests are important, but they are almost a side effect of going through the process of designing your code right. This does form a great body of executable documentation that can serve as a safety net to you and the developers around you. This is fantastic and I think I should be able to speak about it. And the more I speak about it, the more awareness I’m raising and the more likely a given shop is to try it. Now, that being said – I always toss out the appropriate caveats that I’m not the expert. I’m just a guy who things this is right and wants to get that discussion off the ground. Hopefully through that process, we can all grow and learn and in so doing continually evolve our expertise as a whole.

We also talked quite a bit about the negative vibes that have been the focus of a lot of the of the discussions lately. “Crank.NET” and so. For this discussion, it was invaluable to have Martin Fowler and his experience with the Agile movement at the meeting. He talked about how there were a lot of the same issues in the early days leading up to and shortly following the creation and signing of the Agile Manifesto. In short, there were several of the core guys that were particularly avid about the rigidly of principles of the movement and were not overly diplomatic in their delivery of said message. This is what the Alt.NET movement is going through right now. Many of the solutions to the problem were fairly lo-tech, like getting peer reviews on content that’s going to be publicly consumed. He actually talked quite extensively about the fact that on discussion lists, mailing lists and so on that you should always realize that the person you are writing the note to is only a small percentage of the actual audience so context, you have to choose your words well for the wider audience.

Lastly we talked a lot about how Microsoft can help. The interesting part is that early on the discussions it seemed that it was very much an us verses them discussion. As the day moved along, it became clearer and clearer to everyone present that it was in both Microsoft and the movements best interest for Alt.NET and Microsoft to work together in this. If we jointly focus on challenging and strengthening the eco-system within the .NET community to raise it’s bar to the level of the bar in the Ruby community, for example, everybody wins.

In the last session, we went around the room and talked about what we had gotten out of the meeting and what we were taking forward. The same themes were resounding from everyone around the room. And there was a bullet list of goals to pursue over the next year or so. The most contentious of the goals is to put together a manifesto. Like a lot of people, I didn’t get the real reasoning behind it until Martin Fowler said that the reason was to keep anyone, especially vendors, from taking the term and morphing it to fit their individual needs/desires. The movement as a whole is larger than a single person/group.

I second John Kordyback – I too want the next evolution in software development to come from .NET. Alt.NET is attempting to raise the bar high enough that this becomes reality.