2. Which were looked at?
Google Analytics
https://analytics.google.com
Application Insights (MS)
https://azure.microsoft.com/en-us/services/application-insights/
PIWIK
https://piwik.org/
Telerik Analytics (was: EQATEC)
http://www.telerik.com/analytics
3. Why these?
Market penetration, community size, support quality, ecosystem
Price = free, at least for starters
Alternatives all pretty much offer similar functionality or are github
projects of questionable viability
Decent overview at https://github.com/onurakpolat/awesome-analytics
Almost all analytics / telemetry is geared towards web, comparably few
towards desktop applications / general purpose
4. Terminology heads-up
” Telemetry is an automated communications process by which
measurements and other data are collected at remote or inaccessible
points and transmitted to receiving equipment for monitoring”
” Analytics is the discovery and communication of meaningful patterns in
data. Analytics often favours data visualization to communicate insight.”
5. Google analytics
The de-facto standard
Used in appx 50% of sites that use analytics
Price tag = freemium = free for our purposes, potential to upgrade
Intended for online / web but can be easily repurposed to track desktop
applications (C# support)
https://github.com/dustyburwell/garlic
https://www.nuget.org/packages/Gappalytics/
6. PIWIK
Leading open alternative to Google Analytics
Supports self-hosting, may offset any privacy / security concerns
Web / online first, but C# support for desktop tracking
http://piwik.org/integrate/#programming-language-platforms-and-frameworks
Freemium = free, potential to upgrade
Open source
https://github.com/piwik
7. Telerik Analytics
Easy to start using, born with desktop support, cloud-enabled
Simple API, simple integration, e.g.
REST API for public data access
Query construction and data visualizations
https://www.youtube.com/user/EQATEC
Freemium (free limited to 100 app instances per month)
Exception and usage monitoring
8. Application Insights
Integrates into Visual Studio
https://docs.microsoft.com/en-us/azure/application-insights/app-insights-visual-
studio
Exception and usage monitoring
Local monitoring (you’ll get metrics from the last debugging session)
Freemium (free up to 1GB data / month)
Analytics query language and data visualization
https://docs.microsoft.com/en-us/azure/application-insights/app-insights-analytics-
tour
Web/mobile and desktop/services
Open source:
https://github.com/Microsoft/ApplicationInsights-dotnet
10. This is why
Low overhead: free to get started, cheap to continue
Already part of the woodwork:
Integration into Visual Studio (developer mode, debugging)
Default data store is Azure, meaning integration with big data analytics
Extendible and configurable (see github + nuget = source + packages)
Matches the feature set of competing alternatives +
Offline / intermittent connectivity support – will persist data under %LOCALAPPDATA% and
flush later
Query analytics: the query language is quite expressive
Dashboard visualization
Nlog, Log4Net extenders (so legacy logging can be sent off to Azure also)
Perceived low risk choice (because Microsoft)
Cost throttling through sampling (don’t have to pay if you don’t want to)
https://docs.microsoft.com/en-us/azure/application-insights/app-insights-sampling
11. But wait...
In 2014, Microsoft acquired HockeyApp
Already market domination in cross-platform metrics and diagnostics (Android, iOS,
OS X, Windows, Cordova, React Native, Unity, Xamarin)
https://www.hockeyapp.net/blog/2014/12/11/hockeyapp-joins-microsoft.html
From 2016, HockeyApp is recommended way to integrate Application Insights
into mobile and desktop applications
https://weblogs.asp.net/bswiger/hockeyappreplacingappinsights
So, should you use HockeyApp or not?
Pro: crash reports, beta distribution, cross-platform and mobile, DevOps, compliant
with Microsoft roadmap, future-proof for Milestone rollout
Con: extra layer of abstraction, you need a HockeyApp account, more moving parts,
potential surcharge if number of ”apps” increase > 2
13. What’s next
Do a minimal implementation that’s still useful
To be considered first
What’s possible to metric?
What do we want to metric?
What are we trying to accomplish?
What will we do with the data once we have it?
Handshake with all stakeholders
Timeframe: finish the above and ship it in next release