Today is the first day of Microsoft’s MIX10 Conference

March 15th, 2010 by Gabriel Torok

One of the items being announced today by Microsoft at MIX is the SilverLight Analytics Framework. The Silverlight Analytics Framework will let designers and developers visually build analytics into their Silverlight applications using Microsoft’s Expression Blend.

Now, most readers of my blog already know that Developers can already inject Runtime Intelligence analytics into Silverlight (and any other managed code) using Dotfuscator inside Visual Studio. I am excited about this new framework because it offers an entirely new way to configure runtime intelligence (using Expression Blend) and that means a whole new community of users also have access to analytics for the very first time. This is also being echoed by Michael Scherotter, principal architect evangelist at Microsoft Corp. and architect of the analytics framework. He writes that we have “successfully used the Silverlight Analytics Framework to open its application instrumentation to a new audience of designers.”

Runtime Intelligence offers the following advantages over traditional Web analytics services:

· The analytics endpoint (and the resulting data) can be self-hosted and managed by the application provider (you don’t have to send your data to a third party – but that option is also available too).

· While the resulting Web analytics maps to the Silverlight Analytics Framework data model, the underlying SOAP schema is shared with Dotfuscator’s instrumentation.

The common schema allows Dotfuscator to provide a complimentary instrumentation mechanism for any .NET Framework component. THIS means that

· Middle and back-office application tiers can be instrumented providing a deeper view across distributed application workflows.

· Older or alternative applications using WPF or some other non-Silverlight form factors can be benchmarked against the newer Silverlight applications to track both user behaviors and application usage.

The world of application analytics is about to take a big step forward. In fact I believe that one day in the not too distant future application analytics will be as common as web analytics is today and the distinction will eventually disappear.

What decisions could you make to better serve your customers, to reduce your costs, and improve your products if you had ready access to usage data streamed to you from the wild?

Tell me what you would do - I would love to hear from you.

PreEmptive is doing its part to help the Vancouver Winter Olympics go off smoothly.

February 19th, 2010 by Gabriel Torok

Online viewers of the Vancouver Olympics on NBCOlympics.com are using Silverlight based video and photo viewers delivering full HD quality content for viewers and helping content owners monetize their content. I am pleased to say that Dotfuscator had a hand in all of this innovation providing both protection and optimization for the high performing video player at the heart the NBC online Olympic experience.

For an overall description of the Silverlight solution, see: http://team.silverlight.net/events/let-the-games-begin/

For Microsoft’s own description of the role of partners (including us of course), see: http://team.silverlight.net/customer-evidence/vancouver-olympics-ndash-how-rsquo-d-we-do-that/

The development teams especially appreciated the fact that Dotfuscator can accept and output XAP files (instead of low level DLLs that force developers to manually edit XAP files).  This shortens and simplifies the release process – and was critical for an event like the Olympics.

On an unrelated Silverlight note, I was pleased to see David Kelly’s recent blog entry . This Silverlight MVP has identified Dotfuscator’s Silverlight analytics as “a critical tool in your tool Silverlight toolbox.” Good Stuff.

Cheap CEIP

February 8th, 2010 by Joe Kuemerle

Spring is (hopefully) just around the corner here in the northern hemisphere, with warming weather a young man’s fancy turns to that age old question…"what exactly are my users doing with my application?"

We’re familiar with big software vendors including Customer Experience Improvement Program (CEIP) features in their applications allowing them to gather anonymous usage data showing which features people are actually using. Analyzing that data allows them to focus their development efforts on what their users are actually doing, as well as obtaining hard measurements of how features are actually adopted in the wild. As someone whose paycheck depends on meeting the users’ requirements I really like to know how much of my time is being spent developing stuff that people actually want and use. Unfortunately, I don’t have the huge number of person-years and dollars to spend on something that is not directly related to my core application functionality to get a CEIP into my products.

CEIP Dialogs

Instrumenting an application to send its usage data back to the free Runtime Intelligence portal hosted by PreEmptive is covered in some previous blog posts (here and here ), but today I am covering a slightly different scenario. While there are great analytics capabilities in the hosted portal, my current needs are only basic usage tracking and that I must store the data at my own facility. As is normally the case in proof-of-concept situations, I have no budget, no time, and am highly visible to non-technical decision makers.

The first problem, no budget, is easily solved by using freely available tools. First, I am going to use Dotfuscator Community Edition 5.0, included in my copy of Visual Studio 2010, to perform injection of the application analytics functionality into my binaries. Since I need to store the usage data at my location I can’t use the hosted free endpoint and reporting portal, but I can use the new open source (Ms-RL license) Runtime Intelligence Endpoint Starter Kit (RI Starter Kit) to build my own application usage listener service, data repository, and basic reports.

Instrumentation via extended attributes in Dotfuscator UI

The fact that I have no time to implement this is also solved by my selection of tools. Since this is a proof-of-concept, I don’t need to create any extra code to obtain the users opt-in consent for tracking application usage. This means I can leverage Dotfuscator’s post compilation code injection model, similar to IL Weaving in Aspect Orientated Programming, to inject usage tracking directly into my test application binary without changing any source code or recompiling. In a matter of minutes I navigate through my applications structure and define the injection points from within the Dotfuscator user interface. To create a database using either SQL Express 2005 or higher or MySQL 5 or higher only takes a few minutes. Finally, setting up the WCF service project only requires updating the connection string in the web.config. Using the outstanding documentation included in the RI Starter Kit as my guide in less than an 30 minutes I have a proof of concept for tracking how often my application is run and which features the users are actually using.

Application analytics feature use report

Finally, I have to show something useful to the non-technical users. I know that application analytics data is being sent to my endpoint and stored in the database. I can easily run a few queries to get a feel for how the application is being used but not everyone is as comfortable with SQL as I am. As I review the source code included in the RI Starter Kit I see that there is also a SQL Server Reporting Services solution that contains two prewritten reports that show application and feature usage over time. A quick update of the data source, a deploy to the SSRS server, and now the business users have an easy way of seeing what our users like best about our products. To add application analytics data to executive dashboards, there’s also a SharePoint Web Part included so you can easily put an application usage graph directly into any SharePoint site (WSS 3.0 / MOSS 2007 or higher).

Application analytics SharePoint dashboard

All in all, I have spent around an hour and no money adding basic application usage tracking and analysis to an existing product and exposed that data to both technical and non-technical users. With only a small amount of code, I easily add an opt-in dialog to my product so my users can choose to send their usage data for analysis.  Now I have the start of my very own Customer Experience Improvement Program.

PreEmptive is always looking for feedback on our products, please take this new solution for a spin and leave us comments, feature requests and ideas on the project’s Codeplex page.

Dotfuscator 4.6.1200 Released

February 4th, 2010 by Joe Kuemerle

We just shipped the latest update to Dotfuscator, the 4.6.1200 version.  This is mostly a bugfix release but includes a small enhancement that supports using project properties in the ClickOnce package signing certificate path, allowing for better portability of project files between build environments.

There are a number of updates to fix small issues in packaging support, improve handling of mixed mode assemblies and address some issues with Visual Studio integration.

For a summary of the changes in Dotfuscator 4.6.1200 check out the change log here or subscribe to the change log in your RSS reader here .

This update is available to all customers who are current with their maintenance.  Download it here , give it a try, and let us know what you think.

Dev Connections 2009 Keynote Demo

November 12th, 2009 by Gabriel Torok

I was fortunate enough to be selected to demonstrate Runtime Intelligence in Dave Mendlen’s keynote at Dev Connections a few days ago. Everything was very well orchestrated and it was a fantastic experience. There were a couple thousand people in attendance and plenty of energy. When it was my turn I started by making two predictions:

That the audience would see an “easy way to use Visual Studio to allow your application to tell you how it being used in the field” – or a breakthrough that takes feedback driven development to an entirely new level.

And that a year from now these techniques will be familiar and some of them would be accustom to using this information to drive application development decisions.

I talked about how Dotfuscator continues to evolve and now includes Runtime Intelligence, the ability to instrument applications to gather real world runtime data.
And I showed them runtime intelligence information within the Visual Studio 2010 code editor and demonstrated it being used to make better decisions faster.

You can watch the entire presentation on our YouTube channel.