Microsoft PDC Announced for 2009!

We’re excited to announce we’re back in LA next November 17–20, 2009 for our next PDC.  Mark your calendars!

View article...

Mindsurf Conference in Minneapolis on SilverLight 2 Development with Blend 2 SP1

In case you missed me at the Mindsurf conference I've posted my presentation on slideshare.net at

http://www.slideshare.net/christhi/microsoft-expression-blend-2-sp1-building-an-rss-reader-in-silverlight-2-presentation

There I built the following RSS Reader in SilverLight 2 using Blend 2 SP1 you can find the code at http://code.msdn.microsoft.com/flyover18/Release/ProjectReleases.aspx?ReleaseId=1682

          

Predict who will win the political race with this Cool Desktop Application

If you have seen Chuck Todd of MSNBC and his Surface applications for predicting the US Presidential Elections … we can now bring that capability to every desktop! You can download it at download it here and run it to make your own predictions, compare it with the official ones.


Follow me On Twitter for UX Tips

Follow me on Twitter and get UX Tips O the day e.g. Blend Debugging Tips, Blend Tricks, SilverLight Dos/Dont's. http://www.twitter.com/uxarchitect

UX Tip O the Day: SilverLight Cross Domain Policy File Format

If your services site (WCF, ASMX) is not in the same domain as your SL application or you are calling an external site from SL such as an RSS Reader would do you will need a cross domain policy file.  Here is an example (SL 2.0 final).  This can be narrowed down of course.  The reason this is "a tip" is because you may be trying to call an RSS feed and getting a security exception for some sites but not others.  Rememeber SL supports the Flash domain file format as well so sites like reuters RSS may already have a Flash domain file.   If you don't control the site and can't access the RSS feed stayed tuned and I'll show you how to get around this limitation.

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
 <cross-domain-access>
  <policy>
   <allow-from>
    <domain uri="*"/>
   </allow-from>
   <grant-to>
    <resource path="/"
        include-subpaths="true"/>
   </grant-to>
  </policy>
 </cross-domain-access>
</access-policy>  


Join Me at Mix: Talking about UX and ALM

Want to join me in Vegas and see some of our new UX and ALM capabilities (finally) from process to tools I'll be sharing the stage with Chris Bernard to review how you can improve UX design and development using Application Lifecycle Management techniques.   

Improving UX through Application Lifecycle Management (ALM)

Christian ThilmanyMicrosoft Corporation; Chris BernardMicrosoft Corporation

Microsoft Expression Studio is the glue that brings together the designer and developer workflows. Microsoft Visual Studio Team System is the glue that brings together everyone else on a project team. What a perfect marriage! In this session, we show how you can leverage Expression and Team System to improve your overall application lifecycle, decrease your time to market, and ultimately raise the quality of your applications.

http://2009.visitmix.com/


SilverLight Sample: RSS Reader using Databinding using Blend 2 SP1

I just put together this sample on creating a SilverLight 2.0 RSS Reader that leverages databinding and observable collections.   I will present this at the Minsurf conference in Minneapolis on October 28th, 2008.  You can also find this sample in the MSDN code gallery at http://code.msdn.microsoft.com/flyover18 .  

In a future post I will provide step by step instructions on how I built this to stay tuned...

 

 


SilverLight Storyboards for the Flash Developer

If you are new to SilverLight and are looking how to build anmiations in SilverLight using code this is a great webcast for those with a Flash background.   Most Storyboard tutorials are done using XAML but Rick does a great job of using code in a much more flexible manner that gives you an appreciation of what XAML is doing.  You also get a peek at a few animation algorithms such as 'easing equations' for those basic motion scenarios.

 http://visitmix.com/blogs/2008Sessions/T30/


Significant Performance Improvements Coming for Microsoft Distributed Computing and Workflow

Improvements to Microsoft's existing Windows Server capabilities in the form of enhancements to both the .NET Framework and extensions to the application server role, codenamed “Dublin” (application server) are coming.   Microsoft disclosed a set of new enhancements coming in .NET Framework and Windows Server, including key enhancements to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) in the .NET Framework 4.0 release and an enhanced set of application server capabilities in Windows Server codenamed “Dublin.”  
§  Windows Communication Foundation 4.0:  Microsoft is adding new capabilities to WCF to further simplify the creation of RESTful services, including REST Singleton & Collection Services, ATOM Feed and Publishing Protocol Services, and support for an HTTP Plain XML Service.  Additional messaging and correlation enhancements enable customers to work with the most recent transports and protocols.  By further extending WCF to enable seamless integration between WF and WCF and enabling a unified XAML model, developers can build an entire application in declarative XAML code from presentation to data to services to workflow.
§  Windows Workflow Foundation 4.0:  Applications built using WF will realize significant improvements in performance (on the order of ten-fold performance enhancements) and scalability.  There are also new workflow models and pre-built activities (PowerShell, messaging, etc.). An updated visual designer will be easier to use by developers to use and be easier to rehost by ISVs.
§   “Dublin”: This consists of a set of enhancements to Windows Server application server capabilities that – when combined with WCF/WF 4.0 –represent a major step forward for our application server. “Dublin” will offer greater scalability and easier manageability, and will extend Internet Information Services (IIS) to provide a standard host for applications that use workflow or communications.    Taken together, these enhancements will extend Microsoft’s application server and simplify the development, deployment, configuration, management, and scalability of composite applications.    Microsoft will be providing a first CTP of these technologies at PDC.  We will also be releasing some of the REST enhancements separately via Codeplex to allow for early trial and adoption via our WCF REST Starter Kit.
For more details see Steven Martin’s blog

Visual Studio Team System Developer Edition is Merging with Database Edition

As part of the VSTS 2010 announce on Sept 29, Visual Studio Team System Development Edition and Visual Studio Team Database Edition will be merging into a single product. On October 1st, customers who purchase VSTS Developer Edition or VSTS Database Edition will get the features available in both products.   Not is great opportunity to get two editions for the price of one and with the GDR release of the Database Edition soon to be released this will make a compelling bundle.

"In the next release of Visual Studio Team System we will be merging the feature sets of the Development Edition and the Database Edition into a single product. The new product – part of Visual Studio Team System codename “Rosario” – will include all of the features in both the Development Edition and the Database Edition as well as new capabilities delivering even more value in a single product. This will provide a more complete set of capabilities for building software in today’s data-driven environments. Bringing these two feature sets together enables you to take advantage of the core tools for application development as well as the necessary tools for database development, including performance profiling, code analysis, code metrics, code coverage, database refactoring, Schema Compare, Data Compare, and more. As an MSDN subscriber we want you to realize the benefit of this merged feature set now, which is why we are extending this exclusive offer. If you have either the Visual Studio Team System 2008 Development Edition with MSDN Premium subscription or the Visual Studio Team System 2008 Database Edition with MSDN Premium subscription, on October 1, 2008 you will have access to both the Development Edition and Database Edition through MSDN Subscriber Downloads. This change also applies to customers who purchased Visual Studio 2005 Team Edition for Software Developers  with MSDN Premium Subscription and Visual Studio 2005 Team Edition for Database Professionals with MSDN Premium Subscription."


Composite Application Block Musings

Some musing regarding improving performance in your CAB applications .....

For large CAB applications and extremely rich forms, we have found (at the Microsoft Technology Center via our recent client experiences) that MDI applications are very difficult to design in CAB without going throug a few hoops to make sure the app performs well.

If you need an MDI application or if your CAB application needs to create a smart part instance for every data instance e.g. one MVP per customer the please use the following tips this also applies to any large CAB applications..

1. Consider recycling your MVPs at the root workitem level instead of their individual child workitem levels to reduce the working set and speed up load times.

2. Build a global "context service" for all data to be reused from these general views and presenter.

This will provide much more flexibility to allow you to recycle your views and presenters at the root workitem level if you have to.

3. Decouple as much of your state from your presenters or controllers as possible. See #2.

4. Apply .NET application best practices like anything else e.g. implement dispose, eliminate unneeded thread locks,

watch your short term references from your long term objects in CAB there could be many long tern objects, and watch your reflection calls etc.

5. Leverage CAB as intended - don't re-invent the wheel

    5a. Override simpleworkitemactivation service if you want to control activation    
5b. Add Services to the rootworkitem to avoid re-creating web service proxy when you need them.

6. Push as much SmartParts.Add<> logic at load time vs during navigation to save on builder time during user activity adding anything to CAB is one of the slower activities and will affect peformance

be very strategic about where and when do perform your item collection add in the container.

7. Push as much security as load time as possible and leverage object builder strategy extensions to perform Authz as much as possible

re-evaluating security for every data instance can be very expensive. See Smart Client Software Factory's use of Module Actions for an example.

8. Watch your use of third party controls and monitor how smart parts are removed -- make sure your smart parts aren't being re-called unnecessarily.

9. Use the following steps for removing smart parts on destruction:

1. WorkItem.SmartParts.Remove(theView);    
2. ((Disposable)theView.Dispose();    
3. IWorkspace.Close(theView);

10. Leverage the smart client software factory classes (even if you dont' want the recipes) such as the ModuleController, you'll end up doing this anyway. 

11. Group your Workspace.Show() calls in case you have to place several smart parts on parent at once.

Splitting these up may cause screen flicker if you have logic that runs between each show.

Another option is to set the view's visible property to false until you are ready to show all smart parts. Hourglass is better the than flicker for heavy forms.

12. Only use web proxy to business entity translators where performance is not an issue in that context

consider using wpgen (enable generate serialization assembly in build options in VS.NET

to prebuild the web service proxy serialization assembly and consider using the same types passed back from the web service in your contrext or data services to avoid mapping/conversions

This differs a bit from the reference implementations of the smart client software factory.

13. Make use of UI Extension Sites in all of your navigation controls including any outlook style navigation -- this will simplify your common operations and is a great way to distinquish between commands and events.


About Me

Christian Thilmany is a User Experience Architect for Microsoft's Developer & Platform Evangelism Team and sits in Austin, TX