Thursday, July 19, 2007

A while ago, Dax Pandhi, a Microsoft UX fanatic as far as I know him, had several rants about all the attention that Silverlight is getting, almost undermining the value of Windows Presentation Foundation (WPF).   He had strong concerns that though Silverlight is a cool technology, people should not lose focus on WPF.  I think the Silverlight buzz is not all hype.  Like I say in many of my forums, Silverlight is one of the coolest technologies from Microsoft since .NET.  Simply because by taking .NET into the web browser and across platforms, it opens up a Pandora's box of possibilities!  I believe Silverlight will get faster adoption than WPF, because WPF requires the underlying platform to be XP SP 2 or Vista - with .NET 3.0 installed - which in many countries, including India, is a very small share of PCs.  However, Silverlight has much lesser requirements and should catch up much faster.  Note that Silverlight also has OS requirements to be Windows XP and above (with support for Windows 2000 most likely coming later), but yet does not require you to have .NET 3.0 installed.

With all the choices around now, I thought I'll take some time to write a post on how you should choose the best UX technology for your applications.

User Experience is one of the key factors for any software application to succeed.  Be it the desktop or the web or a device, UX plays an important role in establishing an emotional connection and a comfort or familiarity with the end-user.  This increases customer loyalty to the product/service and if your product knows how to make money from customer loyalty, you'll probably make a lot of it.   All known things.

Delivering great UX requires several steps.  Some of these include user behavior analysis, information architecture, blueprints, navigational models, etc.  All of these then get translated into visual design and code.  Design and code eventually decide how the UX vision is translated into the actual software.  Traditionally, limitations of platform and tools have made very rich designs (the kind with 3D, Documents, Multimedia) a distant dream for average developers.  Regular Forms-style applications are the desktop trend and on the Web, it is content mixed with form controls in various layouts.

Very few technologies were able to bring fluid design into the desktop arena - DirectX, GDI+, etc. being some of those - and even few on the Web - Java, ActiveX and Flash.  Microsoft's investments into UX technologies has been aimed at reducing the barrier (both platform and tools) to high levels of User Experience.  With the release of Windows Presentation Foundation (WPF) for the desktop (on Windows Vista, XP SP2 and Windows Server 2003), it is now possible to think of never before UX possibilities. 

On the web, AJAX has added a shot in the arm to traditional web applications, making them far more responsive and intuitive to use.  Silverlight steps this up many levels by allowing rich interactive application interfaces to be built for the Web, interspersing with the functionality of HTML, ASP.NET and AJAX.  Silverlight also takes it cross-browser and cross-platform (IE, Firefox, Safari on Windows/Mac).

Again, all known things.

So how does one approach UX in this new world of multiple possibilities?  Based on who your end-users are, how they will use the application, what product/service you are delivering and what platforms you are targeting, there are multiple options:

  • You want a rich application that is installed by end-users on their desktop PCs.  An example would be Microsoft Office or Visual Studio.  You want the application to be available to the user at all times, have a very rich front-end, lots of client code and want to take full advantage of the client processing power.

Your technology choices:

Windows Forms - if it is a simple application like a data-entry application. 

Windows Presentation Foundation (WPF) - if it is an application that will use some rich graphical features such as vector drawings, multimedia, visual styles, etc.

  • You want a rich application that is not installed by end-users but is available to them on-demand.  An example could be a stock trading analysis tool with rich comparison features, visualizations, charts, etc. with constant changes in the features that are added (which is why you don't want users to install it).

Your technology choices:

XAML Browser Applications (XBAP) - which is still WPF, but a deployment model that delivers WPF applications off an URL, downloads the application, sandboxes it and runs it within the browser window (with an actual process - preshost.exe - executing it)

ClickOnce - With Windows Forms, you could achieve this with ClickOnce technology.  Again a deployment model, but if your application did not want heavily rich features, you could opt for lighter Windows Forms applications.  (ClickOnce for WPF applications is synonymous with XBAP)

  • You are creating a web application with standard features, but would like better responsiveness and usability

Your technology choices:

ASP.NET with AJAX - the easiest way to take your current web applications and "AJAXify" them is to migrate to ASP.NET 2.0 and AJAXHarish has been posting a lot around this lately and I encourage you to check his blog.

  • You are creating a web application with several advanced features.  An example could be a web application with rich graphical visualizations, ink support, vector drawings, etc.

Your technology choices:

Silverlight - a great technology fit for developing those web applications that require high levels of user interaction and rich visualization.

  • You are creating a desktop application that talks to Internet services.  An example is a locally hosted news reader application that displays news in a rich format on the desktop, but needs an Internet connection to download fresh news.

Your technology choices:

WPF Smart Clients - Basically these are regular desktop WPF applications but with several features to detect if you are connected to the Internet, download data when connected, locally cache data, synchronize data when connected, etc.   Smart Clients are a concept that Microsoft has had for a few years now and the basic design patterns remain the same with WPF as well.  A new technology codenamed "Acropolis" and the Smart Client Software Factory are some useful tools if you are building these kind of applications.

I have only highlighted some of the common scenarios of applications.  There are many more - including Tablet PC development, Speech interface development, mobile device development, etc. that I am not going into. 

When you look at the overall UX technologies available, and plot them based on their capabilities today, you get the following:

technologies ux_reach_rich

This is the whole UX map that is available today on the Microsoft platform.  So go ahead and kick some ass with snazzy user experiences!

 

posted on Thursday, July 19, 2007 9:15:38 PM (India Standard Time, UTC+05:30)  #    Comments [3] Trackback
 Monday, July 16, 2007

Windows Live Quick Applications is a set of showcase applications put up by the Windows Live team to demonstrate how building a quick community portal around a theme is easy with the various Windows Live Services and SDKs.

Take a look at some of the sample applications put up:

Contoso University sample: http://contosouniversity.mslivelabs.com/

Contoso Bicycle Club sample: http://contosobicycleclub.mslivelabs.com/

Great use of Silverlight and various Windows Live SDKs to mashup applications.  For the complete source code and reference, you can visit the Windows Live Quick Applications project page at Codeplex: http://codeplex.com/WLQuickApps 

 

posted on Monday, July 16, 2007 8:28:46 PM (India Standard Time, UTC+05:30)  #    Comments [0] Trackback
 Thursday, July 05, 2007

Here's something fun you can do if you have a digital camera.  Go click pictures from your home city (original pictures) that adhere to 3 themes and submit them to Project Shutter.

Get a chance to win some really cool grand prizes and even get entered to win a T-Shirt every 30 minutes!

Now, that's simple and easy, huh?

 

posted on Thursday, July 05, 2007 11:11:50 PM (India Standard Time, UTC+05:30)  #    Comments [0] Trackback
 Tuesday, July 03, 2007

In the short time that Silverlight has been out there in the open, there is a tremendous amount of energy and enthusiasm around it.

Specifically, there are some really cool blogs that are a must-read if you are a Silverlight developer or just an enthusiast.

I thought I'll list them down so you can add them to your RSS reader:

1. Mike Harsh - http://blogs.msdn.com/mharsh/

I love Mike's blog - he aggregates all the cool applications/prototypes that people around the world are writing on Silverlight - some of the real cool stuff make it on his blog and are always awesome applications that make your jaw drop!

2. Scott Gu - http://weblogs.asp.net/scottgu/

I guess everybody knows Scott Guthrie - In his recent posts, he has put up slides to keynote talks on Silverlight. Available here, here and here. Also check out other Silverlight (and WPF/E) posts on his blog - good tips/tricks.

3. Tim Sneath - http://blogs.msdn.com/tims/

I used to read Tim Sneath 's blog from the days of WPF first coming out.  Tim has reams of great content and posts on WPF and Silverlight on his blog. 

4. Nick Kramer - http://blogs.msdn.com/nickkramer/

Nick Kramer is again one of those people who blogged a lot about WPF and is now blogging on Silverlight as well.  Lots of code samples and snippets.

5. Ashish Shetty - http://nerddawg.blogspot.com/

Ashish Shetty has a nice collection of stuff around Silverlight, Expression and WPF.

6. Vivek Dalvi - http://vivekdalvi.wordpress.com/

At first, I didn't quite see too much content - you then have to check through some of the archives and the top posts list to see a lot of good stuff.

7. Joe Stegman - http://blogs.msdn.com/jstegman/

Another Microsoft blogger and MIX 07 presenter whose blog you don't want to miss

To get most of these in one place, you can also subscribe to the Silverlight RSS feed we host on the Silverlight.net website - http://silverlight.net/blogs/microsoft/rss.aspx

posted on Tuesday, July 03, 2007 2:28:48 AM (India Standard Time, UTC+05:30)  #    Comments [0] Trackback
 Friday, June 29, 2007

Finally!

I have been having the latest version of dasBlog on my local system for a long time.  I had pretty much finished content migration, which is actually very easy, and also fixing some few template things that I wanted.  For the last few days, I was also running a parallel URL where I had uploaded the entire site.

Finally, there is a new look and feel with a lot of good things I wanted on the blog. 

My categories are all screwed up because I had chosen not to use the feature earlier - I will start using it more diligently from now.  I am also looking at hacking into the content and changing the categories for older posts - but that will have to wait for another day.

Also, I changed the home page of thinkingMS.com to a better looking one.  Courtesy some Expression Design and some quick notepad work.  Not the best of home pages, but better than what existed.  Check it out.

If you are reading this from a RSS reader, you might want to update your RSS feed (I know it has a little bug right now) and also want to visit the site once to see the new look and feel.  Click here to see it.

Technorati tags:
posted on Friday, June 29, 2007 11:36:29 PM (India Standard Time, UTC+05:30)  #    Comments [1] Trackback
 Monday, June 25, 2007

A couple of different threads that triggered in the past two days prompted this post. 

One involved a Silverlight enthusiast who has been using the BrowserHttpWebRequest class (a new class, similar to the System.Net.HttpWebRequest class in .NET, introduced in the Silverlight .NET libraries that makes use of the underlying browser stack to make web requests) to make requests to a web service in a different domain. 

Result: An exception that says "Cross domain calls are not supported by BrowserHttpWebRequest".

The other involved an AJAX developer trying to call a web service from JavaScript from another domain.  Again a similar cross-domain script error raised in the browser with a "Access denied" message.

The standard paradigm on the Internet is NOT to allow cross-domain scripting.  Cross-domain scripting is nothing new - it has been there ever since JavaScript has been around.  It is dangerous in that it allows a malicious user to inject code into a page from a different domain.  

There are few basic rules when JavaScript executes on a web page:

  • Any JavaScript code that runs within a page runs within the context of THAT page.  Which means that the JavaScript running on a page also gets to call back the same server from which the page loaded, be able to modify DOM elements of the page, be able to get to all the user input, headers, cookies, form fields, etc. on that page.
  • JavaScript included from a seperate JS file is only physically seperate.  When the page loads and a SCRIPT SRC is encountered, the JavaScript file is requested for, downloaded and then the code is included as part of the entire JavaScript.  In fact, execution of the script starts as soon as the file is downloaded completely.

Now having stated the above - let us assume we allowed cross-site scripting.  That would mean a user would be able to include (say as part of a blog's comments) a SCRIPT SRC pointing to a JS file on a different domain.  This part is actually allowed by the browser.  However when the remotely loaded script tries accessing or posting back any of the data on the page (that has loaded from a different domain), it is disallowed and an Access Denied message occurs.  This basically protects the script from stealing any data and posting it back to a different server without the knowledge of the user.

Check the Wikipedia article on Cross-Site Scripting (XSS) at http://en.wikipedia.org/wiki/XSS and go through some of the famous exploits mentioned there.

But I want to build mashups!

Sure, you still want to make use of all the power of AJAX or Silverlight and get services from multiple domains mashed up on the browser.  The solution is quite simple.  Use a bridge pattern to access the third-party services.  This basically means a "proxy" service sits on the same server (as the page on which the JavaScript/Silverlight component is loaded) and any callbacks happen to a service on the same server.   This service can then make a server-to-server call to other web services on third-party domains.  Once the data is received, it can be sent back to the client.

This is a standard pattern for accessing cross-domain services.  The Silverlight team is also working on a solution to make cross-domain posts safely possible in Silverlight 1.1 - but that is something that is only going to be in the future (hopefully).  Currently, Silverlight too blocks cross-domain calls. 

If you think the above makes sense, you are all set to write your code.  If you are the type that likes to see some reference code, try this article: http://dotnetslackers.com/columns/ajax/MashitUpwithASPNETAJAX.aspx

A good explanation is also available at the Yahoo! developer website: http://developer.yahoo.com/javascript/howto-proxy.html

posted on Monday, June 25, 2007 11:38:45 PM (India Standard Time, UTC+05:30)  #    Comments [1] Trackback

TechMela 2007 just got over.  The closing keynote had Tarun Gulati, GM-DPE, announce the date for the next TechMela as well - Feb 27 2008.

We had several firsts at TechMela this year.  TechMela itself was a confluence of events - the four big events at Microsoft India - TechEd, IndiMIX, ITPC and MEDC came together under one roof.  From initial feedback, I think we had the participants enjoying the connected experience - seeing the whole gamut of Microsoft technologies at one place.  We also had a scenario showcase that showed how Microsoft touched the lives of people across the 3 screens - Television, Mobile and PC - across home, on-the-road and work.

I had great fun being part of the TechMela team that put together the event as well as being able to talk about Microsoft Silverlight.

I did two keynote demos - one for the TechMela Business event on the 13th and one for the TechMela Technology event on the 14th.  In both keynotes, I demo'ed the application we are building for Yash Raj Films for the promotion of Jhoom Barabar Jhoom.

I also extended my hand into a few talks at the UX Track on Day 1 - talking about Expression Web, Expression Blend and an impromptu XAML-101 session.  TechMela Day 2 had me in the Web Track - which was all about Silverlight.  I did 4 sessions on Silverlight and Gaurav Khanna, who had flown down from the US just for TechMela, did a couple of deep internal sessions on the CLR inside Silverlight.  We had a packed audience for the Silverlight sessions - and a wonderful audience as well - with very interesting questions and interesting discussions.  I hope the audience had as much fun as I had.

We will be putting out the session material out soon and specifically on the Silverlight sessions, I will be doing a series of blogs with more in-depth details.

If you were part of TechMela and attended my sessions, I would love to hear feedback - either through email, or through the blog or in-person!

posted on Monday, June 25, 2007 11:38:21 PM (India Standard Time, UTC+05:30)  #    Comments [0] Trackback

Our blogs have been down for quite some time now and it had been quite frustrating.

We switched hosters and the new hosting company pulled off support for ASP.NET Full Trust permissions - which is required by the current version of dasBlog that we are using.   There seem to be only few people who have managed to remove the full trust dependencies of dasBlog and even those aren't full solutions.  A hack here and a hack there. 

When it did feel challenging to try and see if dasBlog can be modified, or if the content can be ported via BlogML to some other engine, I couldn't quite find too much time to work on it  - the reason? - TechMela 2007.

At Microsoft India, we are very excited about this new event format - branded as TechMela - which will combine all the four erstwhile annual events - TechEd, IndiMIX, MEDC and ITPC.   All of these will be under one roof and it is going to be the first time ever that you will get to see a unified and connected view of all Microsoft offerings.

Check out the agenda at www.techmela.com to give you a sense of how different, varied and advanced topics we are looking at covering during TechMela.

TechMela is going to be in Mumbai in less than 7 days from now and we sure hope you will try to attend it in person or virtually. 

I am doing a couple of demos at the keynote and am super-excited about it.  I will be showcasing WPF and a really cool Silverlight application that we are building for one of India's largest film production houses.  I will also be doing several breakouts - mainly in the UX track (demo'ing Expression suite of products) and the Rich Internet Applications track.

In the RIA track, I will be doing sessions on Silverlight.  For those who know Gaurav Khanna, he is flying in to do a couple more deep-dive tracks on Silverlight on the same day and I am looking forward to that as well.

Overall, it will be a fun event.  And we hope to see you there!

posted on Monday, June 25, 2007 11:37:53 PM (India Standard Time, UTC+05:30)  #    Comments [0] Trackback
 Tuesday, May 01, 2007

Finally, it is MIX 07 and I can breathe more freely.  We have known this internally for months, but the announcement was to happen at MIX.

Ray Ozzie started the keynote at MIX 07 with a great introduction, one of the best I've heard, to the Software + Service model.  Scott Gutherie, then came in and did some killer demos!! 

I will never forget ScottGu doing the Visual Studio Orcas remote debugging on a CLR process running within Firefox on a remote Mac system!  Wow!

And of course, the BIG BIG BIG SILVERLIGHT ANNOUNCEMENT!  We now officially have a cross-browser, cross-platform .NET runtime.  A runtime that has the very same CLR engine along with support for media playback, DRM, dynamic languages (IronRuby, IronPython, JScript and VBScript),  LINQ (!!), XML, REST/POX, AJAX and more!  All in 2MB!!!!!!  That is mind-blowing stuff!!!  When I'd first heard it, I thought it was a distant dream - but it is here and you can have the bits for yourself.

www.silverlight.net is the Silverlight community site. Check Soma's blog for the full announcement: http://blogs.msdn.com/somasegar/archive/2007/04/30/mix-07-silverlight-shines-brighter.aspx

Keep watching ScottGu's blog for he is sure to post some great stuff as well.  In fact, the auto-play chess game with .NET playing JavaScript (and winning) was a great demo and I would love to get my hands on that one!

Overall, I am super excited.  If you are a web developer, you should be too!  Because we have just opened up the web to never-before possibilities!

posted on Tuesday, May 01, 2007 1:24:44 AM (India Standard Time, UTC+05:30)  #    Comments [1] Trackback
 Monday, April 23, 2007

We did a series of webcasts last month on several web technologies. We covered some fundamentals of ASP.NET, AJAX, Live SDKs, Gadget Development and Silverlight (then called "WPF/E").

We are going to come back with more webcasts next month.  We are currently thinking:

1. ASP.NET AJAX - more detailed sessions

2. Silverlight - more details, integration with AJAX/ASP.NET

What else would you like to hear?  I am not promising we'll be able to do everything you want - but if you attend our webcasts regularily, which other Microsoft web technologies would you like to hear about?

Leave a comment or drop an email (assuming you know my ID if you have attended any session I've done before - not posting it here to avoid spam). 

posted on Monday, April 23, 2007 11:52:07 PM (India Standard Time, UTC+05:30)  #    Comments [1] Trackback