Reading Notes #178

Ballade en ski du 21 mars 2015 - 1

Suggestion of the week


Cloud


Programming


Miscellaneous



~Frank


Reading Notes #177

2015-03-15 13.45.14

Suggestion of the week


Cloud


Programming


Miscellaneous



Tons of statistics and metrics for Microsoft Azure websites (not only Asp.Net)

Your website is finally online. That great, good job. But now, you have a lot of questions: How much visits do I have? Which part of the site is mostly visited? Does the site performs well? In this post, I will show you some tools that exist in Microsoft Azure that will help you to get some answers.

Request and Error

When you create a website in Azure, you automatically got some monitoring. Go on portal.azure.com (the preview portal), and select your website.

Monitoring_2015-03-05_1540

This will be useful to see how many requests and errors you got. You could create some alerts, by clicking the "+" sign, and you would be notified by e-mail if the number of request is greater than x, over the last hour.

Analytics

The first time you will click on this section all the instruction will be given to you.
To collect end-user usage analytics about your application, insert the following script into each page you want to track. Place this code immediately before the closing </headtag, and before any other scripts. Your first data will appear automatically in just a few seconds.
To get analytics for the whole web site, in an Asp.Net MVC site, a good place will be: \Views\Shared\_Layout.cshtml.

In a Ghost blog, if you are using the default theme, the file will be /content/themes/casper/default.hbs. Otherwise, just replace "casper" by your theme name in the path.

Once your website is re-deployed, re-open the website blade and click again on the Analytics graph. And you will be able to see a lot of information: Session per browser, information on page's views, slowest pages, details on sessions, etc.


Analitics_tour


When you click on a graph, the Metrics Explorer blade will be visible. On the top of this blade, you will have many different options to customize your results. You will be able to add a chart, change the time range, add some filter and even set some alerts.


Metrics_explorer


Moreover, if you click on those Charts, tables or even on a row, you will have more details and options to fine-tune the result.


Diagnostics_Search


Application Insights

You thought it was enough? Well, Microsoft Azure still has one more tool for you, that will cover in this post: Application Insights. With this one, you will be able to see the health of your application by adding some tests, custom events, logs, errors, etc.
Adding Application Insights to your Asp.Net website, can easily be done via Visual Studio, like I explained in a previous post.

Since Azure is compatible with many different languages, chances are that you are using one of those. Let say you are running a node.js Ghost blog, how could you add Application Insights? By using website extensions. To add an extension you could use the Kudu interface. This interface is easy to access. In a browser, type the URL of the website but inject "scm" between the name of the application and the azurewebsites.net. Something like http://mybookmanager.scm.azurewebsites.net/


From_Kudu_Console2015-03-01_2044


Once you are in the Kudu interface, click on the tab Site Extensions, then section Gallery. Add the Application Insights Extension.
It's also possible to add a website extension using the website blade.


From_portal_2015-03-01_2101


This will gives you a lot of information already, but to add more customs metric in .Net by sure to add the Application Insights SDK to your porject. In node.js use the applicationinsights package from npm,

~Frank Boucher



References




Reading Notes #176

the-door-1319069-m from freeimages.com

Suggestion of the week


Cloud


Programming


Miscellaneous


~Frank B

Reading Notes #175

Cloud


Programming


Miscellaneous

  • Microsoft or Google? - This post shares some thoughts about a very common question that a lot of people are asking.

~Frank



Reading Notes #174

gitSuggestion of the week


Cloud


Programming


~Frank Boucher


Reading Notes #173


longscarfSuggestion of the week


Cloud


Books

C# Tips
C# Tips_coverBy Jason Roberts
Publisher: Leanpub
Released: December 2014

This book it undoubtedly for people who already know C#. If you want to learn C# by doing the best practices, I would strongly suggest to start with something else. However, if you already know how to code, and you want to improve your, or got this little plus; this book is a must.

It’s not a very big book, but all the zones are covered. It’s split into three parts. The first one will provides many good this to improve the performance of your code, customizes your debug experience, and more. The second part will focus on the very useful design patterns that we should all have in our back pocket. Finally, the third and last section introduces tools and frameworks (NUnits, Moq, etc.) to facilitate your work.

I would definitely recommend this book to any developer. The book is available in all the digital format for free, but if you like it consider giving a donation. :)

Miscellaneous


~Frank Boucher



Visual Studio Online is definitely more than text editor online!

5 powerful features that make Visual Studio online an indispensable tool

If you are a .Net developer then you know Visual Studio. Few months ago, Microsoft released a new version of this tool call Visual Studio 2013 Community edition. This version offers all the features and is completely free. Many of us already have downloaded and installed this version. Another version is also available, but doesn't have the popularity of his brothers... yet. Let's talk about Visual Studio Online.
 

Get Started

Did you know that Visual Studio Online is available for free? Go to http://www.visualstudio.com/ and create an free account that will included:


  • 5 FREE Basic user licenses
  • Unlimited team projects and private code repos
  • FREE work item tracking for all users
  • FREE 60 minutes/month of build
  • and much more.... 

  • 1- It's a Source Control

    It may be called Visual Studio Online, but it has all the features from Team Foundation Server (TFS).
    Let's create a new project. From your home page, under the tab Overview (selected by default) click on New. This will pop the form to create a new team project. One interesting thing to note is that both TFS and Git are supported as Version control system.
    For the post I will create my project MyBookManager using Git.

    Create_project_with_VSO

    2- It's an Agile board


    Now that we have a project, it's time to describe it. Visual Studio Online has an entire section just for collaborative work. From the home screen of your VSO click on _Users_ tab. Create your users, roles and manage their permissions.
    It's now time to time to describe all the features of the project. Click on _Overview_ tab to get back to Home. Select your project, then click on _Work_ tab. From here you will be able to create all the features you need, and split them in tasks and sub tasks; perfect to fill-up a backlog item list and plan your next sprint.
    Once a sprint is started, it's also from here that you will be able to see and interact with the Board.

    board

    From this board, cards can be move by dragging them in the column that reflected the current status of the work. Open the on-premise Visual Studio. From the bar Team Explorer click on the little plug, and select: “Select Team Project…”. If your VSO Server is not present, just add it, then select the your project (ex: MyBookManager).
    For this post I will create an empty Asp.Net MVC project. In the Models folder I add a new class Book with very basic code.

    public class Book
    {
         public int BookID { get; set; }
         public string Title { get; set; }
         public bool Read { get; set; }
    }
    

    Then by right-clicking on the folder Controllers select the Add new Scafolded Item option, and use that to create our CRUD controller and views for the Book model we just created. Let’s check-in the code, and go back to VSO. You should see the code.

    To give more visibility to the work’s status, you can create very nice chart and pinned them on the Home page. To add a new chart, go in the Work tab select Queries.  You can use the existing query or simply create a new one. To add a chart to the Home page right-click on the query and select Pin to Home page.

    Home

    3- It's a build / Deployment server


    create_build_step_1If it's one think that seem always complex for a developer is the automation build and deployment server setup. With VSO no need for all that complexity and resources, only follow a short wizard and your build machine will be setup in Azure ready to deploy as soon as you want.  You can setup an automatic build and deployment from the Azure Portal and Visual Studio. In this post, I will use Visual Studio.

    From the Team Explorer bar in Visual Studio, click on Builds then New Build Definition, to get the wizard.

    Build_step1

    First step, just put a name who makes sense.

    build_step_2

    Step two, we need to choose what will trigger the build. I select continuous integration, so the build should start at every check-in.

    Build_process

    When I create my project I select Git as a source control, so for the next step I will need to expand the Build process template zone, by clicking Show details.  Then from the list select GitContinuousDeploymentTemplate.12.xaml.

    The build definition is done, save and let it there for now.

    4- It's a Code Editor


    If it's one feature that you could expect from a tool like VSO is to be able to edit code online.  The online version is obviously less powerful then the on-premise one, but still you will it very convenient and easy to use.

    Let's change the button in the book list to be more modern. First, select Code tab.  Now let's find the Index.html file under the View folder. Once the file is selected, click on Edit button. It's time to add some bootstrap classes to transform the look of our button. As you can see even we are in a web  browser we have IntelliSense. 

    Edit_online

    Build_overall_processHit Save and it will commit our change. Since we create a continuous build, this one should kick-in and build and deploy our changes. We can see the status of our build by going in the Build tab in Visual Studio Online. It’s also possible to see it in the Home page by pinning it.
    When the build will be done, our change will be visible in the website. Of course, this build is very simple, unit test and more complexes processes could also be implemented.


    update_Result_after_auto_deployed



    5- It's a Test server


    Another great feature is the possibility to create a test plan for the quality assurance (QA) tester. You could create it via VSO as a test plan by going in the last tab Test. And create a checklist,  so they can follow it to test the application feature by feature.  You could also record the action with Microsoft Test Manager and then do a load test on the website by running simultaneously multiple tests on different instances in Azure.

    Microsoft_Test_Manager



    Verdict

    Visual Studio Online is a great tool and win to  be now more. What are the features you enjoy the most in VSO?


    ~Frank B

    References

  • http://www.visualstudio.com/


  • Reading Notes #172

    HomeSuggestion of the week


    Cloud


    Miscellaneous


    ~Frank B.


    Reading Notes #171

     

    Different readings which kept my interest during the week.


     Windows 10 free Update

    Suggestion of the week

    • Walyou (Jasmine Henry) - This is why you should care about Windows 10.

    Reading Notes #170

    2015-01-15 19.08.05Suggestion of the week


    Cloud

    • Data Pipeline Guidance (patterns & practices) - Interesting project using Azure Eventhub's best practices in an IoT context.

    Programming


    Podcast


    Miscellaneous

    • Removing Distractions - Interesting post where the author share is experience while trying to be less connected.

    ~Frank B.


    2014 numbers for Franky's Notes


    Reading Notes #169

     

    Happy New Year!


    freezing-rain-388933_640

     

    Suggestion of the week


    Cloud


    Programming


    Miscellaneous



    ~Frank Boucher


    Reading Notes #168

    poteauSuggestion of the week


    Cloud


    Programming


    Miscellaneous


    See you in 2015!


    ~Frank B


    Reading Notes #167

    Suggestion of the week


    Cloud


    Programming

    • .NET Blog (Christiaan Rakowski, Linux Al, Ron, Nathan Dimitriades, Warren, EShy, Thomas Levesque, Svolo4, Jeremiah Gowdy, les, James S, Srigopal C Immo Landwerth [MSFT]) - Very interesting and complete post that explains the goals behind the .Net Core and how it is useful to us.

    Books

    1897OT_DynamoDB Applied Design Patterns_1DynamoDB Applied Design Patterns
    By Uchit Vyas, Prabhakaran Kuppusamy
    Publisher: Packt Publishing
    Released: September 2014
    ISBN 13: 9781783551897

    This book takes you where you are and brings you directly in the cumulus. It starts gently by explaining the basic of the NoSQL, then move to DynamoDB fundamental: what is a data model and how to create a table.

    Chapter after chapter, the book moves you to the next level by bringing new complexities and explains how to manage them with his simple but complete scenario. All the code samples are in Java and extremely well explained. With my .Net background, I always understood.

    The book ends by presenting many best practices to get the best of DynamoDB, and compare it to other popular NoSQL databases.

    I will definitely recommend this book to all people looking for a NoSQL database. DynamoDB is unavoidable when we are looking for a no-relational database, and this book is a must to have in our bookshelf.

    Miscellaneous



    ~Frank B


    Stop losing time installing your software

    Automation is the key to many hard situations. Everyone knows that, yet a lot of tasks are done manually. In this post, I will share with you some easy steps to install all your applications.

    Blue Gears

    Let's get started


    For those how follow this blog I talked many times about Chocolatey. For all the others, Chocolatey is a Machine Package Manager, somewhat like apt-get (on Linux), but built with Windows in mind.
    Assuming that you don't have Chocolatey installed, let's start by that. Open a command prompt (cmd.exe) as Administrator, and execute this command:
    @powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin
    Now anytime you need an application you can simply do a choco install command. This will download the latest version of the package online the last package, and install it on your PC.
    Here are some examples with popular applications:

    Application Command
    Notepad++ choco install notepadplusplus
    Atom choco install atom
    7-Zip choco install 7zip
    Skype choco install skype

    You can find the complete list of all applications on the Chocolatey web site. Many other commands are also available to search, list and update some packages:

    Command Description
    choco install atom -Version 0.140.0 Install old version (0.140.0) of Atom
    choco list nunit Show all package that contain nUnit
    choco update updates chocolatey to the latest version
    choco update notepadplusplus updates NotePad++ to the latest version


    Let's go a step further


    Will it be nice if we could chain them? This is possible with Boxstarter, a repeatable, reboot resilient windows environment installations using Chocolatey packages. To install Fiddler, Atom, and Visual Studio 2013, simply type this command in Internet Explorer (IE) and Boxstarter will starts his magic.
    http://boxstarter.org/package/fiddler4,atom,visualstudiocommunity2013


    Note: This will work only in Internet Explorer (IE), on Chrome or Firefox you will need a "Click-Once" extension.



    Turn it up to 11


    Now that we know we can chain them, what is stooping us to create a script that will install ALL our favorite applications? Well, nothing!

    Boxstarter is a very easy and powerful way to automate the installation of software. Here an example to show some of the great features supported by Boxstarter. In the following script I will: configure Windows, install the latest Windows updates, install Visual Studio Community 2013 with an extension and install many other applications.

    # Windows Configuration
    Update-ExecutionPolicy Unrestricted
    Set-ExplorerOptions -showHidenFilesFoldersDrives -showProtectedOSFiles -showFileExtensions
    Enable-RemoteDesktop
    Disable-InternetExplorerESC
    Disable-UAC #Win8
    Set-TaskbarSmall
    
    if (Test-PendingReboot) { Invoke-Reboot }
    
    # Update Windows and reboot if necessary
    Install-WindowsUpdate -AcceptEula
    if (Test-PendingReboot) { Invoke-Reboot }
    
    # Install Visual Studio Community 2013
    choco install choco install visualstudiocommunity2013
    
    # VS extensions
    Install-ChocolateyVsixPackage PowerShellTools http://visualstudiogallery.msdn.microsoft.com/c9eb3ba8-0c59-4944-9a62-6eee37294597/file/112013/6/PowerShellTools.vsix
    
    
    # Install WebPI (Platform Installer) 
    choco install webpi
    
    # Install
    #  . SSDT
    #  . Microsoft Azure SDK - 2.4.1
    #  . Microsoft Azure SDK for .NET (VS 2012) - 2.4
    C:\Program Files\Microsoft\Web Platform Installer>WebpiCmd.exe /Applications: SSDT, WindowsAzureSDK_2_4_1, VWDOrVs2012AzurePack.2.4
    
    
    if (Test-PendingReboot) { Invoke-Reboot }
    
    # Install Favourite Tools
    choco install sourcetree
    choco install resharper
    choco install Atom
    choco install LinqPad
    choco install fiddler4

    You can now execute this script executing the command in IE:
    http://boxstarter.org/package/url?C:/dev/Demoscript.txt 
    In this case, the file was on a local folder, put it could have been in a share folder on another server, or somewhere online like in gist.github.com.

    Wrapping up


    I hope it will help you to automate repetitive task and save time. For more information about Chocolatey or Boxstarter, go visit their respective web site. Any comments, suggestions and/or questions are welcome.


    ~Frank B

    Reading Notes #166

    IMG_20141123_093027577_HDRSuggestion of the week


    Cloud


    Programming


    Miscellaneous


    ~Frank B.


    Reading Notes #165

     

    OmnisharpSuggestion of the week

     

    Cloud

    Programming

    Integration

    • Azure BizTalk Services: An Introduction - This is the second post of a series on BizTalk. We are still in an introduction mode, but this is good, BizTalk is not a little application or system, and in this time of the Internet of things, it's good to have the good tools.
    ~ Frank B

    Toby, did you see what I just did!

    Today, I was running around with my laptop trying to find someone to show him what I did. My problem was that since I'm working from home, I found no one except my dog... Toby, did you see what I just did! He was looking at me and didn't really care about that I was doing some C# in Atom, a regular text editor. So, here I am now, sharing my discovery with you.

    The "What"

    While reading some article on the Internet, I fall on a video talking about OmniSharp.
    A family of Open Source projects, each with one goal - To enable great .NET development in YOUR editor of choice.
    SO I decide to give it a try in one of my favorite text editors this time called Atom.
    Less than two minutes after, I was running across my house....

    The "How"

    What I like about Atom that it is so easy to install and to customize. The easiest way to install it is via Chocolatey.
    Chocolatey NuGet is a Machine Package Manager, somewhat like apt-get, but built with Windows in mind.
    Assuming that you don't have Chocolatey installed, let's start by that. Open a command prompt (cmd.exe) as Administrator, and execute this command:
    @powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin

    In a new command prompt again with the administrator permission, let's Install the text editor Atom:
    cinst Atom

    and Git:

    cinst Git

    Now to install the OmniSharp in Atom you have two options. You could do it through the Settings or using a console. For this post, I will use the second option. Let's open a new command prompt, always as Administrator.
    The reason why I use a new prompt every time is to be sure that environment variable gets refreshed.

    Execute these command:
    apm install language-csharp
    apm install autocomplete-plus-async
    apm install omnisharp-atom

    Now open Atom and let's put some code:
    using System;
    
    namespace ConsoleAppDemo
    {
        class Program
        {
            static void Main(string[] args)
            {
              var myBook = new Book{Title="Get Started with OmniSharp"};
              Console.WriteLine(String.Format("Here is my review of: {0}", myBook.Title));
            }
        }
    
        public class Book
        {
          private string _review;
    
          public string Title{get;set;}
    
          public string Review{
            get{
              if(String.IsNullOrEmpty(_review))
              {
                _review = "This book is nice";
              }
              return _review;
            }
            set{
              _review = value;
            }
          }
        }
    }

    Nothing special until you start the OmniSharp server with Ctrl-Alt-o.

    Boom!

    Atom_Intellicnse


    As you can see now the intelisense, completion, code navigation and so more! If you click on the little green flame on the bottom left you see details about notification and error message.

    notification


    The end


    OmniSharp is a frontend compiler, not a complete compiler so it doesn't generate CLI code. But It's already a lot. Today, you can use OmniSharp with Sublime Text 3, Atom, Emacs, Brackets, Vim and with command line only. So whether on your old laptop or your new PC, whether you run Linux, Mac or Windows let's do some C#!


    ~Frank Boucher


    Four Simple Tips to Improve your Asp.Net MVC Project

    When it's time to do the re-factoring of a solution, it's always a good idea to clean the code before doing any re-factoring. In this post, I will share with you simple but very efficient ways to improve your solution.

    1- Forget the magic string


    By default in Asp.Net MVC magic strings are used every where.
    return View("Index");
    or
    @Html.ActionLink("Delete Dinner", "Delete", "Dinners", new { id = Model.DinnerID }, null)

    Nothing bad here, but nothing will tell you that to did a typo, or that the method name as changed. This is where T4MVC will become a great tool do add to all your project.

    To add it a simple Nuget command is enough: Install-Package T4MVC. By doing this a T4 file (T4MVC.tt) will be added to your project that will generates a number of files. These generated files will simplify your life and gives you the opportunity to code using strongly type.

    Here are few transformations:
    // Before ----------------
      return View("Index");
    
    // After with T4MVC
      return View(Views.Index);
    An action link in a view.
    // Before ----------------
      @Html.ActionLink("Delete Product", "Delete", "Products", new { id = Model.ProductID }, null)
    
    // After with T4MVC
      @Html.ActionLink("Delete Product", MVC.Products.Delete(Model.ProductID))

    An Ajax call.
    // Before ----------------
    <%= Ajax.ActionLink( "RSVP for this event",
                     "Register", "RSVP",
                     new { id=Model.DinnerID }, 
                     new AjaxOptions { UpdateTargetId="rsvpmsg", OnSuccess="AnimateRSVPMessage" }) %>
    
    // After with T4MVC
    <%= Ajax.ActionLink( "RSVP for this event",
                     MVC.RSVP.Register(Model.DinnerID),
                     new AjaxOptions { UpdateTargetId="rsvpmsg", OnSuccess="AnimateRSVPMessage" }) %>

    A redirection.
    // Before ----------------
    return RedirectToAction("Details", new { id = product.ProductID });
    
    // After with T4MVC
    return RedirectToAction(MVC.Products.Details(product.ProductID));

    When writing the code, it gives you intellisense where you normally would not have any. At compile time, it validates all the code so no typo or other misspelling errors are present.

    2- Clean your views


    You know all those "@using" on the top of each views that we copy over and over... It's time to remove them. The way to do it is by moving them to the web.config file in the "Views" folder.

    web.config location

    So you can move the namespaces used globally
    @using Microsoft.Security.Application
    @using System.Globalization;

    by including them to this section:
    <system.web.webPages.razor>
      <pages pageBaseType="System.Web.Mvc.WebViewPage">
        <namespaces>
          <add namespace="System.Web.Mvc" />
          <add namespace="System.Web.Mvc.Ajax" />
    
          <add namespace="Microsoft.Security.Application" />
          <add namespace="System.Globalization" />
    
        </namespaces>
      </pages>
    </system.web.webPages.razor>

    3- Don't lose time debugging


    To many people are losing time debugging their application or web site. Start using Glimpse right away! This will provide information in real time across all layers of your application from the UI to the server and database side. Perfect to know everything that happen on a click of a button: javascript validation, controller code and even the query in the database.







    Install it in ten seconds with the Nuget command manager and pick the version you need.

    PM> Install-Package Glimpse



    Glimpse is secure and is configured to be accessible only from localhost by default. But don't trust me and try it by yourself, or go check this one minute Glimpse Heads Up Display youtube video.

    4- Start monitoring your website health and usage


    Move your website on Microsoft Azure and use the Application Insights. This will gives you the opportunity to monitor that availability, performance and usage of your live application.

    Add Application Insights


    To add it you got many possibilities, one of them from Visual Studio 2013, just right-click on the project and select Add Application Insights Telemetry, and voilà!

    Now you just need to run or deploy the website and after few minutes or so you will have plenty of information, graphs waiting for you in the Azure Portal.



    Informations



    You will find a lot of information about Application Insights on the Microsoft Azure


    Wrapping up

    I hope it will help you, thanks for reading. Any comments, suggestions and/or questions are welcome.

    ~ Frank Boucher


    References