• 18/8/2015

    .Net Library for Alchemy API

    It has been several months I’ve been “playing” with multiple semantic analysis services. I especially discovered in April. One interested thing about them being that IBM recently acquired them.

    Semantic analysis

    What is semantic analysis? It’s analyzing text data (or sometimes pictures too) and trying to understand the meaning of the content in order to extract metadata from it. It’s a little lit if I were to give you a document and ask you to read it and say “what concepts is it about? What entities (persons, cities, places, dates…)? etc.”. The ultimate goal being to extract everything automatically.

    The library

    Noticing they didn’t have any official .net library and needing one to test it, I decided to code it.

    Rather than producing “hacky” code, I did my best to make clean and reusable code. Moreover, instead of keeping the code for myself I put it on github and created a nuget package so that other developers can start up easily.

    If you want to check-out/fix my code, it’s over here.

    If you want to play with the lib, it’s over there.

    I’ve been surprised by the fact that this library has been downloaded several hundred times in a few months. We’ll see how this project evolves J

    • 17/8/2015

    Speaker at Collab365

    I’ve been greatly honored being selected to be speaker at collab 365.

    This event directly comes from the sp24 with the spbiz which happened a few months from now. It’s a free online event which will take place on October the 8th during 24 hours all around the globe.

    Adding to the fact I’ll be speaking at this event among other great speakers, I also have the great privilege to give 4 sessions (oh yeah!).

    Using office Graph API’s (anglais)

    Traduire SharePoint de A à Z (Français)

    L’importance des métadonnées pour votre entreprise (Français)

    Setting up your release pipeline for SharePoint in Azure (Anglais)


    Go ahead and register for the event so you’re sure you won’t miss anything!

    See you soon.

    • 4/8/2015

    Deploying cloud service via new 2015 build templates

    Introduction to the new build system

    Microsoft recently made a new build definitions model with the release of Visual Studio 2015 (TFS 2015’s bits are not yet available but this new build service is already available on Visual Studio Online).

    Just as a reminder the “old” build models were based on two artifacts:

    • The build process template: defined via XAML, it allows you to configure the sequence for the build process.

    • The build definition: links together the template, sources and some settings.

    This methodology offers a wide range of possibilities to automate your build, packaging, testing and even deployment.

    But this comes with a few disadvantages:

    • The build process can only be customized via Visual Studio/.NET, this doesn’t go along with Microsoft’s new openness.

    • Hard to debug

    • Important learning curve

    For this reason, Microsoft renamed this methodology “XAML builds” and delivered a new way to build your applications (currently named “build definition” in the interface).

    This new methodology has a lot of advantages:

    • Easier to understand

    • Easier to debug

    • Can be edited via the web portal (no need of Visual Studio anymore)

    • Provides a lot of third parties integrations (gulp, ant, maven…)

    The only drawback being you can only have sequential steps, no complex workflow anymore, here is some documentation:

    Reminders on cloud services

    Among the various services offered by Microsoft Azure, you’ll find the cloud services (Paas). As a short recap and from a developer’s point of view, those can be designed from Visual Studio and are made of two types of components:

    • Worker role: component meant to do the heavy lifting, similar to a windows service in it’s behavior.

    • Web Role: component allowing us to build web applications. However use those only if you have peculiar constraints in terms of deployment/configuration/scalability. Azure web sites (or now azure web apps) cover 98% of what they do and are really simpler to deploy.

    If you want more information about it:

    Deploying a cloud service from your release pipeline

    Now as a conscientious developer, you’d like to deploy this cloud service automatically setting up a release pipeline. To avoid writing a way too long post, I’m not going to enumerate all the advantages a release pipeline brings compared to a manual build and deployment process.

    You currently have two ways of setting up the automatic deployment:

    • From the cloud service on the current portal (, there is an option to configure everything for you.

    • Set up everything manually

    The “issue” with the automatic method is that Azure is going to configure a “XAML” build. It’s OK if you only want to deploy the cloud service, but let’s say you have other items to build/deploy within your solution or that you want to integrate third party tools? In that case it’s going to be very difficult to accommodate XAML builds and these other items (or even impossible in some cases).

    I’m going to explain you how to deploy your cloud services automatically with the new build service of Visual Studio Online. This post is going to be based on time I spent searching and on two other ones, one explaining how to manually configure the XAML builds to deploy, another one explaining how to configure the new builds but for azure web sites.

    I’ll assume you already have created the cloud service and a storage account. (you can also automate that part if you want to do so).

    You also have to be the administrator (or co admin) of your subscription on Azure (or ask your admin publish settings file) and administrator of your team project on VSO.

    Configuring the service connection to Azure

    This first step mainly consists in saying to visual studio online “hey I have an azure subscription other there that you can use to do stuffs”. To do so go to your team’s project main page and click on the gear (top right corner).

    Click on the services tab then on add a new service connection.

    Add the subscription id, name and certificate that you can find from the publish settings file. You can get this file multiple ways:

    • Clicking on the blue link bottom right corner

    • From the Azure powershell console

    • Asking you azure administrator (if you have one)

    Here is a video that explains how to configure these settings.

    Note: for this step I had no issues with my personal live account but it seems that if your azure subscription is under an enterprise agreement and if you’re logged in using a corporate account, you might have troubles. To workaround this issue at Negotium we configured a deployment from the azure portal which added the service connection at the same time.

    Adding the publishing step

    Let’s go to the “build” tab of your team’s project, you should already have created a new build definition of type “visual studio”. By default 4 steps are configured:

    • Visual Studio Build: actually builds the code

    • Visual Studio Test: for those familiar, mstest

    • Index and Publish sources: creates debug symbols and packages these.

    • Publish build artifacts: brings back the ouput of the process and archives it with the build

    We’ll begin by editing the first step to add these arguments to the msbuild process « /t:Publish /p:TargetProfile=Cloud ». “cloud” must be the name of one of my cloud service publishing profiles (by default cloud and local).

    This will instruct msbuild to make publishing packages after building.

    That being done, we’ll add a last 5th step to our build process of type azure cloud service deployment.

    Select the subscription you just added, add the storage account name you want to use for the deployment and the cloud service name.

    For the cscfg and cspkg you have two different options, either you can specify a relative or full path or you can specify a powershell search pattern. Preferring precision I set:




    “imageResizer” being the name of my cloud service project.

    (if you’re not sure of the files/folers names just build once and have a look to the drop’s content)

    Don’t forget to enable this step and you’re all set!