about
framework & approach
knowledge network
news & events
technology council
why join?

Friday, March 07, 2008

Mix - Conclusion

The bad:
  • UX track needs some work.
  • Business panelists were not very impressive and forward-thinking. I found the 2006 sessions with Ebay, MySpace and Amazon to be more interesting. Those guys actually had profitable businesses. Web 2.0 guys make cool stuff but still have no idea how to make a buck out of it other than ads.
  • Keynote was too demo-centric. I understand the need for some wow-factor in order to get developers excited acount SilverLight, but IMO flying images and glossy buttons don't "wow" anybody anymore.

The good:

  • The Ballmer / Kawasaki interview was a lot more fun than the Gates / O'Reilly discussion at Mix 06. Tough questions, good humor, and Ballmer is just fun a guy. I was really thrilled I got to ask him the EC2 question.
  • I got more interesting info on the tech side than I expected. SilverLight finally looks promising, Version 1 was just a toy, more of a CTP than anything else. But this is pretty cool.
  • I'm very impressed with the MVC team. It's so unlike Micrsosoft: hire active smart bloggers, forward thinkers with deep community relationships (small team, only 4 FTE right now), give them complete freedom, and see what happens. They're not even locked into a release schedule. New builds will happen frequently and are completely based on community feedback. Basically it's like an open-source project with virtually unlimited funding. Any developers' dream. These guys were so honest about the company, didn't care about pissing people off, it felt very non-corporate. I loved it.
  • Open Space is a great concept. I wish I had spent more time there. The 45 minutes I spent chatting directly with Scott Hansleman and Phil Haack were worth the $1300.
  • The overall openness and unpretentious tone were promising. Microsoft's always been great at supporting developers, and that hasn't changed. "Web developers, web developers, web developers!!!"

Mix 08 - Day 3

SilverLight / Ajax integration

Some good ideas there, like how to integrate your siliverlight app with the Ajax history manager. I was impressed with how transparent the integration is.

Not only can you can access any DOM element or JS object from SilverLight, but you can even register managed code event handlers for javascript events. That's pretty cool. The JS to SilverLight integration is really good, too. Just mark any method as Scriptable, register it, and JS will be able to access it. The JS proxy converts CLR types to javascript objects automatically. I believe you can register javascript event handlers to CLR events as well.

It did give me a bunch of ideas in terms of expanding my Ajax code without breaking the good old HTML page metaphor. For apps other than email clients and intranet apps, Flash and Silverlight apps just look weird. When developing apps for the masses, you have to always weigh usability vs what users are used to. The Office Ribbon may look nice, and for all I know it may be more usable, but it is so different from the traditional menu system it took employees a long time to get used to it. That can be OK in an enterprise environment where people are paid while trained, but in the web world, this can kill your business right there. Areas that could benefit from Ajax support may be file system access, local storage, rich media display (project management Gant chart etc)... tons of possibilities there.

The one thing I'm still going to use Flash for for a while is audio/video capture. Silverlight doesn't have that capability yet.

Creation internation apps

Not much new here- use resource files, place resources in satellite assemblies etc...
A few good points though.
  • Avoid the conpt of "Countries' for liability reasons
  • Don't create maps and deal with border problems.
  • Don't show flags.
  • Avoid text in images.
  • Of course, build a UI that can accomodate for varying string sizes.
  • Make sure fonts have full Unicode character coverage.
  • Localize javascript and CSS files.

Thursday, March 06, 2008

Mix 08 - Day 2

Out of the 3 sessions I attended yesterday the SEO one really stood out. Great session. I got a ton of cool tips out of it. It pretty much paid for the trip. I'll post the link to the video as soon as I find it.

Oh yeah, and the TAO party was really great.

Steve Ballmer keynote

Great keynote today. Ballmer is a fun guy, and answered tough questions with a smile. He looked like a motivated, smart, and surpisingly honest guy. I got to ask him a question about Micrsofot's plan to offer an Amazon EC2 / S3 alternatice on the MS platform, and he pretty much told me it's in the works, but still confidential. We should know more in 3 months. But basically he admitted MS will have a hosted file storage and utility computing offer pretty soo. Exciting stuff.

UX Track - a failure

When I read about the UX track I got pretty excited. Information architecture. Interaction design. I thought I'd get a bunch of great tips, dos and don'ts that'd help me create great web experiences. I've attended 1 1/2 sessions, and it was quite a disppointment.

In session #1 (interaction design), we learned about the revolutationary concept of "brainstorming", but rebrnded under the name "ieation phase" - they're consultants, they have to pretend to be thought leaders to make money I guess. But nothing about actual interaction design in web apps.

Session #2 (information architecture) unveiled the secrets of folksonomy (fancy consultant word for tagging), and wasted 30 minutes of the attendees time in modeling a "Hotel" class. ("Hmmm.. it should probably have a name and a description, maybe a location as well? What data types could that possibly be?"). Are you kidding me??? This is what my interns do all friggin day!

UX track is a wonderful idea with incredibly poor implementation. 1 hour is not enough time to do group activities (which are overrated anyway) and learn something. Tell me something I odn't already know, or don't bother.

I wasn't the only one feeling that way. Other designers walked out. If Microsoft wants to keep Mix interesting by keeping a mix of designers and developers, they better fix this fast.

Other sessions

ASP.NET Ajax - nice presentation by Nikhil Kothari . Some nice little code snippets and Ajax best practices. I think it's worth mentioning XML-Script is pretty much dead in the water. Micrsosoft is looking at a different approach for client-side databinding and templating.

Great MVC session. Scott Hanselman is clever, funny guy. They're doing a really good job with that framework. The open space discussion afterwards was very interesting. It looks like we'll have to wait for the next preview to get better AJAX support, but they seem to be trying to monthly builds out, so that's encouraging. MS has a good team working on this.

Good quote from Scott: "compilation is really just a series of unit tests". He even went as far as questioning the purpose of compilation altogether. When using test driven development methodolgy (TDD), are strongly typed languages really just useful for intellisense support? Probably. But that's where Sscott and I disagree. Intellisense support and code readablilty are a big deal for me. My app has over 100,000 lines of code. I can guarantee you that if everything was loosely typed, handing code over to new developers / interns etc... would be a nightmare.

I also learned about how to use Linq's dynamic data binding when submitting a form. Pretty cool, but you gotta make sure you don't expose vulnerability. It reminds me a bit of SQL injections. Trusting the query makes coding easy and saves a bit of time, but can lead to serious security holes.

That's where Scott's recommendation of using custom objects between Controller and View makes a lot of sense. Only expose what the view needs to know. It doesn't solve the problem of trusting the query at the controller level though. Here's a concrete example.

Let's say theProduct class has a Name and Description Property. For whatever reason, in a specific context you only want to expose "Name" as editable in your HTML form. In asp.net, injecting more properties in the post data is difficult, if not impossible. When using a FormView/DetailsView, you'd need to inject a new databound control in the data control tree, all on from the client. You just can't do that.

In MVC, if using Linq dynamic data binding (something like Bind(c => Form.Product) - I;d need to look up the exact syntax), you'd basically matching Product properties by name. If your post data contains a "Product.Description" field, it'll get updated.

So... watch out.

Another topic of discussion revolved around building business objects leaning towards the UI tier rather than data tier. A typical business tier might know about DataRows, DataSet etc... But think about business objects containing validation and presentation attributes around its properties. It can make view building pretty easy.

That's basically what SalesForce does. When building custom objects, you define validation rules at the object level. It makes a lot of sense IMO. The biggest complaint I've had from users though is the lack of customization at the presentation level.

Anyway, it was a very interesting chat with very smart people. I'd love to see the ability to set validation rules at the object level.

Wednesday, March 05, 2008

Mix 08 - Day 1

I'm attending the Mix 08 keynote in Vegas right now.

Strategy

So far, nothing really new. Microsoft is basically playing catch-up with other industry leaders. MS seems to be focusing in 3 areas:

- Advertising platform (desperately trying to grab some of Google's insane market share)
- Device management unification (Zune/XBox/MediaCenter etc...)
- Virtualization and utility compupting both at the pltform level (trying to catch up with VMWare) and service level (Exchange Online, SQL Server Online) - trying to catchup with Amazon AWS offering. No news about an EC2 equivalent or licensing changes to accomodate for elastic comuting though.

IE 8

I can't believe after a 2 year wait we're expected to cheer for features like integrated debugger, CSS/DOM inspection, CSS 2.1 support and better Javascript performance. Other than web slices, IE 8 is just on par with Firefox and Safari. There's some support for HTML 5 and localstorage. Overall, it looks good, but it's 2 years late. This is what IE 7 should have been. Hugh... whatever.

SilverLight 2.0 / Expression Studio

Ver, very interesting news. SilverLight is offering some interesting advertising features, but the real big deal is DoubleClick announcing support for SilverLight. This could seriously speed up SilverLight market penetration, but it's also very intriguing since DoubleClick and Google are trying to merge, and the Google/MS war seems to be at its peak right now. No MS employee will even mention the G-word here. So what does this mean? Is there a deeper message in this announcement? What's DoubleClick incentive in supporting this very new technology?

MSN Video demo, showing Beijing Olympics video coverage. Looks really, really cool. Replay feature on live streams, picture-in-picture... awesome.

A couple of SilverLight marketing site demos (Hard Rock memorabilia and Aston Martin). This is hilarious. It reminds me of those good old Flash web sites that I thought had gone out of style years ago. Sure, bandwidth is better, processors are faster, so they look a bit better, but this is 1998 all over again. I guess they're trying to add some "wow" factor to this keynote because of the lack of breakthrough announcements, but come on... these are useless, useless apps. Haven't we learned anything over the past 10 years???

Cirque du Soleil was pretty cool. Nokia speech was mind numbing. MIXr is sooooo 2007. WeatherBug - whatever.

If I see one more SilverLight demo I'm going to get sick.

Conclusion

It's all about SilverLight. No mention of ASP.NET MVC. Scott Guthrie had promised a new release, but I've heard nothing. I have a list in front of me of all new software available to download, but it's all Expression Media / Studio and IE 8. Nothing about ASP.NET Ajax either.

Silverlight is pretty much Flex, with the advantage of supporting .Net programmirng languages and IDE, but worse animation features, and no audio/video capture or Flash Comm Server equivalent.

IE 8 is Firefox + web slices and offline storage (which probably won't be useful for another 2-3 years).

Oh yeah, and in 5 months we'll get a .Net 3.5 SP that'll add rippling effects to WPF. Great...

There you have it.