Monday, October 13, 2008

Microsoft announced that Silverlight 2 is now releasing out of BETA and all the development tools and runtime updates will be available for download shortly. 

A new announcement is providing support for the Eclipse IDE, hence allowing Java developers and other Eclipse developers to stay within their familiar development environment while developing with Silverlight 2.  This has been done in collaboration with Soyatec, an international software company and a major Eclipse solutions provider.

The Eclipse tools website (with screenshots) is available at http://www.eclipse4sl.org/ 

If you have still been having your application on Silverlight 2 BETA 2, this is the time to upgrade your application.  There are a bunch of breaking changes and it is important to know that visitors who will auto-update to the latest version of the Silverlight plug-in will end up having a broken experience if your website is still using BETA 2.  Take a look at the breaking changes document and Tim Heuer’s excellent post on what steps developers should take to upgrade their applications.

The official Microsoft PressPass article with more details on the plug-in deployment statistics and features is available here.

Have fun developing!

posted on Monday, October 13, 2008 9:51:55 PM (India Standard Time, UTC+05:30)  #    Comments [1] Trackback
 Monday, August 25, 2008

If you already know about Photosynth, skip to the next paragraph.  Photosynth is a phenomenal concept born out of Washington University Microsoft Research with more than 10 years of research.  It is a fantastic way to pick tons of photographs of a monument, building, object, room or anything else and creates a 3D fly-through experience of browsing the photos.  Of course, these photographs can be taken by different people, through different cameras, at different seasons, different times of the day, with different people in front, etc.  For details of the technology working, see Photo-Tourism at Washington Edu.

Photosynth has been in technical preview for a couple of years (or more) now.  The preview allowed people to view "synths" created and published by the Photosynth team, but no way to create their own synths.  The team has just released an all-new viewing experience as well as a full-fledged tool to create synths of your own and share it with the world.

The tool and experiences can be found at the brand new Photosynth community site at www.photosynth.net

Here's a synth (yes, you can embed them now) of the Taj Mahal:

 

And here's something that struck me as funny - an innovative use of Photosynth - now this is what happens when you put stuff out to community, the possibilities seem endless:

 

And the work is not done yet!  At SIGGRAPH 2008, the team demonstrated some new work titled "Finding Paths through the World's Photos".  It showcases a unique blend of bringing your own photographs along with community photographs to create experiences that are unparalleled.  Check out the demo in this video:

All of the ongoing work can be followed at http://phototour.cs.washington.edu/

posted on Monday, August 25, 2008 10:38:35 PM (India Standard Time, UTC+05:30)  #    Comments [1] Trackback
 Tuesday, May 13, 2008

This was announced at MIX 08 and the product team has put its first BETA out already! 

Windows Presentation Foundation (WPF), the superset of Silverlight used for building rich desktop experiences, has its third major update.   The .NET Framework team today released the .NET Framework 3.5 SP1 and Visual Studio 2008 SP1, both as BETA and downloadable for free - offering a ton of features in ASP.NET, AJAX, Visual Studio, VB.NET and C#. 

Scott covers it all in his marathon post here and Tim Sneath does a detailed write-up of the WPF features here. I thought I will highlight the key things that excited me (and had been waiting to talk about!):

Graphics Enhancements in WPF

Hardware accelerated Shadow and Blur effects: Pixel Shader effects that allow designers/developers on WPF to just add a line of code to get shadow and blur effects.  The best part is that these automatically run hardware-accelerated. Best part: The effects model is designed in a way that developers can create their own re-usable effects.  A detailed write-up of the effects model and a tutorial on creating your own effects is available here.

Improvements in Text Rendering, Animations, 2D Graphics and Startup:  A whole lot of performance enhancements have been made, specially around text rendering in 3D scenes and with regular 2D animations.  Performance has also been significantly enhanced for the cold startup time (when you load a WPF application for the first time).

HLSL and DirectX integration: DirectX developers can use HLSL and Direct3D integration in WPF, allowing for DirectX scenes to be rendered on WPF controls!  This is huge for companies and developers that already have existing investments in DirectX and want to port any of it to WPF.

New Controls:  WPF will have three new controls that are bound to be popular with developers instantaneously.  A really rich DataGrid control that provides the most often used tabular data view, a WebBrowser control that will let you host browser-based applications in a WPF window and (hold your breath) the Office Ribbon control with full adherence to the Ribbon-UI guidelines!!  That will enable developers to just build Ribbon-menu based applications with the least effort!

Deployment

OK, now the bigger part!  One of the bane of WPF applications was the necessity of a huge .NET Framework installed on the system.  The .NET Framework 3.5 redistributable is 197MB making it very hard to bootstrap to a WPF application that is being installed. 

Introducing the .NET Framework Client Profile.  This is a much smaller version of the runtime (expected to be only around 26MB!!!) that does not contain several of the server components (for example: ASP.NET) and only includes the assemblies required for client applications, namely - the .NET Framework core, WPF, WCF and Windows Forms.   This also comes with a bootstrapper (~200KB) which can be included into your client applications.  The bootstrapper will check for .NET Framework availability and then download the .NET Framework Client Profile setup package if it found that .NET Framework is not installed already.    The bootstrapper is also smartly written to look at only incremental components - for instance, if you already had .NET 3.0 and your application required .NET 3.5, it would only download the incremental components, hence reducing the download size much further.  Note that you will have to explicitly configure your application to require only the client runtime components while building the application.

Remember that since most Windows XP systems already have .NET 2.0 or higher, this should significantly reduce the download size for .NET Framework.  This is probably the best update for WPF since its first release!!!

BETA 1 Notes

Much as I want to try all the great stuff immediately, remember that there are some incompatibilities of Visual Studio SP1 with the Silverlight 2 BETA Tools for Visual Studio.  This will cause your Visual Studio Silverlight development experience to break.  A new version of the Silverlight Tools will be released soon (see Scott's blog for more information).

Also remember that this is the BETA and not all features mentioned above (like Ribbon UI) are immediately available.  See Scott's blog for details.   But hey, we've made the announcements.  And Scott's team has been pretty kick-ass in shipping stuff really fast!

posted on Tuesday, May 13, 2008 12:57:58 AM (India Standard Time, UTC+05:30)  #    Comments [4] Trackback
 Monday, April 14, 2008

Sudha Hariharan, a Flex Enthusiast I met at the Adobe Flex UG, had an interesting email conversation with me on Silverlight.  She has posted the same on her blog and you can check it out here.

Thanks Sudha - it was fun answering those questions!

posted on Monday, April 14, 2008 8:01:34 PM (India Standard Time, UTC+05:30)  #    Comments [1] Trackback
 Saturday, March 29, 2008

Yesterday was fun.  I had been invited to introduce Microsoft Silverlight 2 at the Flex User Group in Bangalore.  I met a whole bunch of cool people and was overall great fun talking to them.

I finally got to meet Mrinal Wadhwa, the champion of the Flex UG in Bangalore. We had been chatting away on email for a while and it was good to finally see more of the person than his Facebook profile!

Supreet Singh, my partner in crime began proceedings to a fully packed room talking a little about User Experience.  Just a little because the room was full with developers.  So after that it was all demos and geek talk.

As expected, the conversation very soon got into a comparison between Flex and Silverlight 2.  I did not want to really compare, but had wanted the audience to look at Silverlight 2 as a technology holistically.  But I guess that is hard for anybody who's working on Flex day in and out.  We had some interesting discussions about the evolution of Silverlight.

The DeepZoom demos were really well received.  I was a little surprised to get the entire audience applauding the Hard Rock Memorabilia gallery and a few other DeepZoom demos I had with me.  I had a question from Mrinal about uploading images to build a DeepZoom collection and I had said I would answer that later in the session - I intended to show the DeepZoom tool before doing that and never got the time in the end.  So if you still have the question, do check out MS Live Labs PhotoZoom and learn how to build your own DeepZoom collections here.

When I showed the designer-developer collaboration using Blend and Visual Studio, there was some discussion in the audience about the whole workflow.  We discussed about actual workflow of projects today which involved a lot of raster prototyping in Photoshop and then actual slicing/dicing to make the CSS/HTML that can be used in Flex (or regular web pages).  We were running out of time for a more elaborate discussion, but there was some good feedback that raster is still very important to have in the overall designer workflow.  I did mention that designers would use raster even in Silverlight projects.  I could be way off here, but I got the impression that regular Flash work still used a lot of raster and did not leverage the obvious benefits of vector.  Some people also argued that it was easier to get raster images than vector images and did not mind sacrificing the fidelity.  Maybe an offshoot of not having more designers in the room!

Another interesting discussion was around performance.  It obviously seemed that the biggest concern to Flash/Flex developers was performance and memory utilization of applications.  In the Silverlight world, the CLR probably makes a huge difference in terms of performance.  I did demonstrate some differences in the JavaScript and C# execution using the Silverlight 2 Chess application. I also think that though the underlying framework plays a huge role in determining performance of your applications, it is also a lot dependent on the quality of code.  For Silverlight applications, there are some tips and tricks on building high-performance apps and if you are exploring this, you should check out Seema Ramchandani's talk here.  Check out her blog and you'll learn a lot of what happens under the hoods.

There was some discussion around security and I had promised links detailing Silverlight security architecture in detail. The Silverlight security cheat sheet is the best way to get started.

We also talked a little about Expression Design and since we had the room for a limited time, we couldn't get to seeing more of the Expression toolset.  Remember that you need Expression Blend 2.5 March 2008 Preview for Silverlight 2 (there are 3 versions on the Expression web site that is bound to get a beginner confused).

Finally, I thank everyone, especially Mrinal for inviting us over and giving us a chance to introduce Silverlight.  I got some good pieces of feedback and will pass them on internally.  I think overall there was interest and given that many RIA development concepts were already well-known to the Flex folks, it should be easy for them to give Silverlight a shot.  Everything you need for getting started on Silverlight is available at www.silverlight.net

Remember, there will be judgements, criticisms, praises and reviews all over. The best way to make a judgement is to try the stuff yourself.  And if you did not like what you saw, give us feedback.  If you liked what you saw, spread the word! :)

posted on Saturday, March 29, 2008 6:09:41 PM (India Standard Time, UTC+05:30)  #    Comments [0] Trackback
 Saturday, February 09, 2008

Developers and designers I meet ask me one perennial question - "What's coming in 2?" 

Well, some clues popping out - specially this one by Jesse Liberty. 

I tend to give another piece of advice to developers/designers.  Expression Blend 2 December Preview is available (and has been for a while) and designers should download it today and start working on Silverlight 1.0 sites.  It gives you a good grasp of the tool and gets you setup for designing with more features when Silverlight 2 releases.  You also could try your hand at WPF projects and get a hang of some WPF data-binding features as well.

Developers on the other hand should look at the coding aspects of WPF and can also get familiarized with the XAML DOM using the Silverlight 1.0 SDK.  Most of the concepts of XAML and vector drawing, brushes, etc. are explained very well in the documentation and samples that come along with the SDK.   Get it today and learn it inside out.  If you've already done that, revisit it to see what topics you haven't familiarized yourselves with.

Other than the books Jesse Liberty put up on his post, I'd also recommend Laurence Moroney's excellent introductory book on Silverlight 1.0

If you are a new developer to Silverlight, this is one book you should get!    

posted on Saturday, February 09, 2008 8:56:21 PM (India Standard Time, UTC+05:30)  #    Comments [1] Trackback
 Monday, January 28, 2008

Exciting time for us here!!!!   Here are some things to get you started with MIX fever! :)  Loads of great prizes and goodies to win - so go ahead and do some stuff!

clip_image001

Hear ye, hear ye!  MIX08 to debut the first ever MIX UX Track which is 3 days of solid content dedicated to creatives / designers.  Lou Carbone, David Armano, Dan Roam, Kim Lenox and others will speak.  In conjunction with Adaptive Path, the User Experience track is just one of the many great reasons for all types of designers and creative professionals to attend MIX this year.  http://visitmix.com/2008/mixux.aspx

clip_image002 

The deadline for this year’s CSS contest, RESTYLE, has been extended.  Folks can still clip_image003restyle the MIX08 Homepage and win a pass to MIX08, 3 nights at the Venetian, $$ and more, more, more! http://visitmix.com/2008/restyle/

clip_image004

Have you been listening to The Signal?  Each week a new episode debuts featuring a speaker or MIX crew member talking about some of the upcoming coolness happening at MIX08.  Listen to their interviews with Molly Holzschlag, Kip Kniskern, Jonathan Snook and others as we countdown to Vegas.  Got a question for the show?  Email signalm@microsoft.com or leave a voice-mail message at (425) 703-4650. http://visitmix.com/blogs/TheSignal/

clip_image006 

Perhaps you remembered last year’s MIX, in which we featured Flotzam, a WPF screensaver mash-up that showed MIX07 feeds from Facebook, Flickr, Twitter and blogs. Well, we are doing it again this year with a twist: we are running a contest and will feature community created skins of the application on the big screen and on the screensavers of the computers available to attendees at the show.  The best skin will win an XBOX 360.  Entering the contest is easy: everything you need to know can be found here http://www.visitmix.com/blogs/News/403/ including links to screencasts and instructions that show how easy it is to do the restyle.  

posted on Monday, January 28, 2008 8:21:26 PM (India Standard Time, UTC+05:30)  #    Comments [1] Trackback
 Friday, January 18, 2008

If you are familiar with WPF development, you will know that one of the most useful features is the ability of WPF UI development is to use Styles and Resources.  Basically, it is a way of creating skins for your controls, like CSS would do for HTML, and then applying those skins.

What this basically means is, like in the CSS scenario, WPF controls can be skinned and re-skinned without having to change any of the code and functionality.  The entire look and feel is well-separated from the presentation layout.

Dax Pandhi and Nukeation have pulled off some fantastic stuff just leveraging that.  This was in the works for a while and I was always excited to know about this project.  Dax has been gracious to give me a full license of the product as well, and it looks wonderful. (Thanks Dax).

In return, I thought I should let everyone know that reuxables is really a smart way to jazz up your WPF applications by leveraging some of the fantastic design that Nukeation churns out.

Check it out at http://reuxables.nukeation.com

Way to go Dax!

posted on Friday, January 18, 2008 5:47:50 PM (India Standard Time, UTC+05:30)  #    Comments [0] Trackback
 Tuesday, December 25, 2007

I have often found that developers and designers who have not yet begun working with Silverlight, often confuse a few things.  I thought this post will help explain the typical Silverlight development environment - how the tools, the code and Silverlight itself are organized.

In simple words, Silverlight is a plug-in.  Many people who have not begun development on Silverlight, confuse it to be a tool of some sort with a UI.  I have observed that this notion usually comes from Flash developers/designers.  In the case of Flash, the tool used to build applications is called Adobe Flash and the plug-in required to run Flash applications is called the Flash Player. 

On the Microsoft end, Silverlight is the name of the plug-in - which contains all the runtime elements required to render the UI of your applications and execute the code of your applications.  The Silverlight runtime is installed one-time on your computer.  You could install this be going to www.microsoft.com/silverlight or by visiting any page that uses Silverlight and clicking on the "Get Microsoft Silverlight" icon when prompted.

Installing Silverlight has enabled your browsers to view Silverlight content.  For development of Silverlight content, you require a set of tools.  These can be categorized as designer and developer tools.

The designer tools you'll require is primarily Microsoft Expression Blend.  Expression Blend helps you create Silverlight projects and WPF projects.  WPF stands for Windows Presentation Foundation, which is part of .NET Framework and is a superset that is used to create rich desktop applications.   Silverlight projects created in Expression Blend follow the same project structure that developers working with Microsoft Visual Studio are familiar with.

Expression Blend is primarily used by designers to:

  • Create the front-end design for your application:  This is created using vector elements from the toolbox such as Rectangle, Ellipse, Line, Path, MediaElement, Canvas, etc. and using the properties pane to set various properties such as Fill color, Fill type (Solid, Linear Gradient, Radial Gradient, etc.), Stroke color, Width, Height, etc.  Each element has several properties that can be applied to it and most of these can be set from the property pane directly.
  • Organize elements:  Elements added to the application can be named to help in identifying them later on.  Multiple elements can also be grouped.  Grouping automatically creates a Canvas element (with the width and height of the boundary of elements) and groups the elements as child elements of the newly created Canvas element. (Remember: Canvas is the only container element in Silverlight 1.0).  You can also use Expression Blend to change the z-order of the elements.  This basically means which element resides on top of which other element - something that is done automatically based on the order of the elements - and can be changed by either changing the order itself or by changing the Canvas.ZIndex property.
  • Animation:  Animations are created using Storyboards.  It is helpful to switch to the Animation workspace (from the Window menu) to help in creating Storyboards.    Once a Storyboard is created, timelines are recorded using the Timeline Recording feature. 

Microsoft Expression Blend is currently available in two versions - Expression Blend v1 was released in May 2007 and only supports WPF development.  For Silverlight development, you will need Expression Blend v2 which is currently under development and preview releases are available from www.microsoft.com/expression.  Look for the latest preview release and be sure to download Blend 2!

All design created in Expression Blend is automatically translated (as you add elements) to XAML.  XAML is an XML-markup to describe the UI.  The Silverlight plug-in parses the XAML when a Silverlight project to render the UI in the browser.  Anything you do in Expression Blend creates the XAML in the background.  You can also switch to the XAML view in Expression Blend to view the markup.  This is akin to creating HTML pages using a tool when the tool is generating HTML markup in the background.  XAML is a common UI description language across WPF and Silverlight, though the number of XAML elements you can use in WPF is much larger than Silverlight 1.0.  Expression Blend automatically changes the available toolbox elements based on whether you are creating a WPF project or a Silverlight project.

Microsoft Expression Design is the other tool you can use in the Silverlight development environment.  Expression Design is used for much finer elements of design, with support for layers, various brushes, effects, path transformation tools, etc.  It is a vector design tool that can help you create design assets for use in Silverlight.  Say that really cool looking button with extra-fine detail.   Since many of the tools and shapes you use in Expression Design do not have a straight-forward mapping to XAML (which is what Silverlight can understand), you export your design to XAML once it is ready.  The export process looks at the design, rasterizes (converts to images) stuff that is incompatible with XAML, converts vector shapes to paths or other supported elements and provides XAML that is compatible.  Such XAML can then be included into Expression Blend to add further animation or interactivity.

Microsoft Visual Studio is what developers use to add event-handling code that can then call back web services or can trigger other actions based on user-input.  Every element has event handlers for mouse, keyboard or ink input and these are handled in code - JavaScript is used as the programming language for Silverlight 1.0.

As a developer, you can use notepad for authoring both the XAML and the JavaScript and for embedding the Silverlight object on to the HTML page.  However, Blend and Visual Studio provide a much richer development experience and most of the code for embedding the object is automatically generated.

To get Visual Studio to understand the XAML semantics, it is worthwhile to install the Silverlight SDK available on www.silverlight.net.  The Silverlight SDK also comes with some sample code and quickstart examples, as well as the all-important documentation.  The documentation contains a full reference for all objects, methods, properties and events and also several basic articles to get you started with the concepts.

So in summary, Silverlight is the plug-in that you or your end-users require to install to enable your browser to render Silverlight content.   Expression Blend and Expression Design are part of the Microsoft Expression Studio which enable designers to design Silverlight projects.  Visual Studio is the developer tool for developers to write the required code for the applications.  Silverlight SDK gets you started with required files, project templates, documentation and samples.

Really simple, right?  Happy coding!

posted on Tuesday, December 25, 2007 8:33:05 PM (India Standard Time, UTC+05:30)  #    Comments [1] Trackback
 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