Tuesday, 3 May 2016

Application Insights Live Metrics Stream with ASP.NET 5

The single feature I deeply loved from the old Visual Studio Online Application Insights (before it was handed over to the Azure Team) was the Developer Dashboard, a real-time overview of how your application was faring.

Improve your product by analysing real world usage data with Visual Studio Online Application Insights

There is a replacement though: Live Metrics Stream. It is very powerful, way more than the old Developer Dashboard:


The problem is that if you try to configure it with an out-of-the-box ASP.NET 5 Application you will never manage to make it work:


…even if you have the latest Application Insights SDK package installed.

The reason is because not all the features of Application Insights are supported out-of-the-box with ASP.NET 5 – if you run it against .NET Core 5.0.

If you want to integrate LMS in an ASP.NET 5 application, you need to add this code snippet to your startup.cs file and remove dnxcore50 from your project.json file.


I totally expect a full support for all the Application Insights’ features to come soon, but for now if you really need LMS in your application you need to stick with DNX 4.5.1+ as a runtime.

Friday, 22 April 2016

A look at the new Work Item Tracking features in VSTS

I usually don’t do this, but the VSTS teams are overhauling this area at such a pace that makes a knowledge refresh really needed Smile

Aside from the cards layout a few months ago, there are really compelling features added to the platform. It isn’t easy to define what compelling is for WIT, as it is much of user interaction scenarios more than pure technical stuff doing magic, but I find them very, very interesting.

First of all, how many times during a planning meeting you create a Work Item and you then realise you chose the wrong type? Believe it or not, it happens all the times. Now you can just change the type from the UI, easy as that:




Another feature worth mentioning is the possibility of moving a Work Item between Team Projects. There might be a ton of reasons behind this need, I even heard of a Team Project used for support and escalation requests for multiple products.

Anyway, it is just like this, and you can also change the type here:



You can also create a new branch from a Work Item (very handy for feature-based development):



This is a fantastic way of keeping the planning aligned with development, IMHO.

Eventually, you can now follow a Work Item.


This means you’ll get an email whenever this Work Item is updated by other members of the team – I can already see Product Owners’ hands clapping!

Tuesday, 12 April 2016

Considerations on HockeyApp and exception management strategy for apps

I started to look at HockeyApp recently, and I reckon it is quite an impressive piece of software. Microsoft acquired it in 2014, and now they are pitching it as the solution for Application Monitoring for apps, regardless of the platform, while Application Insights is the APM solution for web application and services.

With that in mind, the first thing we need to know is that we need to join HockeyApp’s Preseason program – it is an early access program (they are quite into hockey over there Smile). With that you will get access to the UWP support but also to another key feature: custom events.

The thing with HockeyApp is that being an app-centric tool the main usage scenario they developed the product around is when the app crashes in an unmanaged way.


Unmanaged is key here: without Preseason SDK (NuGet package actually) you can only gather crash data at the next application launch. And what if I would like to collect data from exceptions I manage on my own?


That is where Custom Events come around. They are not as descriptive as unmanaged exceptions (HockeyApp collects stack trace data, device information, etc.) but they are a very handy way of keeping track of this important data distribution.

The exception management strategy here becomes two-folded: unhandled exceptions go straight to HockeyApp with all the trimmings, while instead you need to separately log the exception data you need when you manage to catch them, and then send the relevant event to HockeyApp.


In the future I am expecting features to be added from both Application Insights and Xamarin Insights to HockeyApp. The latter two teams merged as of a few weeks ago, and this can only reinforce an already very good platform.

Saturday, 9 April 2016

Getting started with Kusto a.k.a. Application Insights Analytics

Last week Brian told us about Kusto, an internal data analytics tools which then became a component of Application Insights.

You can start using it right away, there is nothing to configure. You’ll find an Analytics button in the Application Insights blade on the Azure portal:



There are lots of samples ready to go – let’s take the first one (distribution of response times in the last 24 hours, by response code):


The language is very straightforward – there is also a guide here. The result will be charted at the bottom:



This is another good one – application requests comparison over a 24 hours period:



Data like this is critical for proactive monitoring as well, you can periodically monitor this dashboard and understand where the bottlenecks are in your application.

It is really a great tool!

Wednesday, 30 March 2016

On the potential of Bash on Windows in a DevOps world

One of the announcements of todays’ //build is the availability of Bash on Windows, thanks to Ubuntu. I share the excitement as well, but focus on individual developers left something behind IMHO: it is a great step ahead for development purposes on development machines, but also from a DevOps perspective.

Let’s put it in this way – if you are developing a cross-platform application, which can run on both Windows and Linux, you now have the potential of a single set of scripts for automation.


You won’t have to maintain two different sets of scripts. You will be targeting both Windows and non-Windows machines, with the same logic, reducing maintenance costs by roughly half and standardising on procedures which would work on both.

I really see it as a game changer in the DevOps world! Smile

Monday, 21 March 2016

SCVMM extension for the new Team Build in action

I mentioned that a few times – I am a real enthusiast when it comes to certain topics, and Lab Management is one of these.

If you installed the SCVMM extension like I did in the last post, then you will find extremely easy to use it in your build process.

You’ll need to create a SCVMM Service Endpoint to allow the tasks to interact with the server:


Once this is done, you will find the new task under the Deploy tasks:


This task has some actions, and it can interact with both a host or a cloud:



There is also a minor bug in this version: if you try to start a VM the task will wait until the end of the specified Wait Time even if the VM is started. THis is going to be fixed soon though.

Wednesday, 9 March 2016

Advantages of a shared architecture: the TFS/VSTS example

A few months ago I wrote a throwback article for MSDN about VSTS, its journey from “TFS in the cloud” to a full-fledged service, and its evolution.

It is great to see how things evolved, and now it is pretty much the opposite compared to five years ago – they share the same architecture, but for clear reasons VSTS is updated every three weeks compared to the quarterly TFS updates.

A perfect example of this shared architecture is the Extensions Marketplace. Released late last year, the Marketplace is the major vehicle for Extensions deployment and distribution.

It is not only cosmetic extensions and tweaks – even major changes like the SCVMM Integration extension for the new Team Build is distributed that way, which includes VMWare support for Lab Management!

Anyway – back to topic – if you browse to the _gallery page of your TFS 2015 Update 2 RC2 (and RTM when it will be), you will find this:


Which means that extensions built for VSTS can be reused in your on-premise TFS with no changes! For example, let’s take the SCVMM extension I mentioned before:


You can download it, and you are going to be presented with the upload instructions:


It is as easy as they say!



It is literally it. You now need to install the extension, and this is per-collection:



Once you upload the extension, this is available in the gallery exactly like the VSTS’ counterpart:



The great advantage of this architecture choice is that once you deploy something to the cloud, it is much easier to backport it to on-premise and it saves a lot on the maintenance side of the product – once you deploy a fix, the fix is (99% of the time) for both.