Category: Development

DevelopmentEvents

Insider Dev Tour coming to Toronto and a city near you

Insider Dev Tour Banner

The Insider Dev Tour is coming to Toronto on June 25, 2018 and will be held at the Microsoft Canada office in Mississauga, Ontario. This is a full day event where you can come and learn about Machine Learning (ML), Modern Desktop Apps, Fluent Design, Artificial Intelligence, Progressive Web Apps (PWA), Microsoft Graph, Teams, Mixed Reality, Extending Office 365, and so much more! For the Toronto event register for free at https://www.insiderdevtour.com/Toronto?ocid2=spark . For other locations see this link http://aka.ms/idevtour .

The Insider Dev Tour is for developers interested in building Microsoft 365 experiences today, using the latest developer technologies, as well as for those who want a peek into the future. If you can read code, this is for you, regardless if you are a beginner, expert, student, or hobbyist developer.

The tour is a great opportunity to connect directly with leads and engineers from Microsoft (Redmond), as well as regional industry leads and Microsoft Developer MVPs. If you missed out on attending the Microsoft Build 2018 conference then this is a great opportunity to follow up on some of that same content.

Register today for free at https://www.insiderdevtour.com/Toronto?ocid2=spark .

Enjoy and I hope to see you there.

References

https://insiderdevtour.com/

AIAzureDevelopmentEventsProductivity

Microsoft Build 2018–Day 2 Highlights

Today’s keynote by Joe Belfiore was focused on Multi-sense + Multi-device for Microsoft 365, which is Windows, Office and EMS

Image showing how Microsoft 365 brings together Office 365, Windows 10, and Enterprise Mobility + Security (EMS), a complete, intelligent, and secure solution to empower employees.

Announcements

  • Fluent Design System updates.
  • UWP XAML Islands, which lets you incorporate UWP into WinForms, WPF and Win32 applications. This also means you can start to bring in the Fluent Design System into these UI frameworks.
  • Windows UI Library, which brings native platform controls as NuGet packages instead of being tied to the OS version. This will work from the Windows Anniversary Update and newer.
  • .NET Core 3.0, which will support side-by-side runtimes, along with support for WinForms, WPF and UWP.
  • MSIX, which is dubbed the best technology for installing applications on Windows. This inherits the Universal Windows Platform (UWP) features, works across Enterprise or Store distributions, and supports all Windows applications.
  • Windows SDK Insider Preview – https://aka.ms/winsdk
  • New developer revenue sharing model. Developers will get 85% when their app is found in the Microsoft store, and 95% when you provide your customers to your app in the Microsoft store.
  • Microsoft Launcher on Android will support Timeline for cross-device application launching. On iOS this will be supported through Microsoft Edge.
  • A new “Your Phone” experience coming soon to Windows 10 that enables you to see your connected phone text messages, photos and notifications and then interact with them without having to use your phone. Really neat experience – now if only they support Windows Mobile 10 Smile
  • Microsoft Sets was officially shown and demonstrated how it can be used for an easier way to organize your work and allow you to get back to work where you left off when ready. This means not having to have 25+ tabs open in Chrome or Edge. Nice!
  • Adaptive Cards is being added to Microsoft 365, which will enable developers to create rich interactive content within conversations. They demonstrated a GitHub Adaptive Card for Outlook (365) where you could comment and close an issue. Another example shown was paying for your invoice from an email.
  • There was a lot of buzz for Microsoft Graph, which is core to the Microsoft 365 platform. Microsoft Graph helps developers connect the dots between people, schedules, conversations, and content within the Microsoft cloud.
  • Cortana and Alexa start speaking to one another. Sometime in the future you will be able to access your Alexa device through Windows 10 and likewise on an Amazon Echo you will ne able to speak to Cortana.

Enjoy!

References

https://developer.microsoft.com/en-us/events/build

Modernizing applications for our multi-sense, multi-device world

Microsoft 365 empowers developers to build intelligent apps for where and how the world works

AIAzureDevelopmentEventsProductivity

Microsoft Build 2018 – Day 1 Highlights

This is my first attendance at the annual Microsoft Build conference taking place in Seattle, WA. I have to tell you that so far I’m not disappointed. Here are some of the highlights from today’s events:

  • Azure is becoming the world’s computer: Azure | Azure Stack | Azure IoT Edge | Azure Sphere.
  • Azure IoT Edge runtime which runs on Windows or Linux is now being open sourced.
  • Microsoft showed off Cortana and Alexa integration which was pretty cool.
  • New Azure AI infrastructure announced: Project Brainwave which is a real-time AI on cloud and edge devices.
  • Announced Project Kinect for Azure, an Azure AI-enabled edge device.
  • Visual Studio Live Share is now generally available. This provides real-time collaborative development, shared debugging, independent views and works across Visual Studio and Visual Studio Code (Windows, Mac and Linux).
  • Azure Event Grid is getting new improvements like dead lettering (DLQ) and custom retry policies. Event Grid is also adding new event publishers for Azure Media Services and Azure Container Registry, and new event handlers for Storage Queue and Relay Hybrid Connections. Finally Azure Event Grid is providing an alternative form of endpoint validation. Event Grid provides reliable event delivery at massive scale (millions of events per second), and it eliminates long polling and hammer polling, and the associated costs of latency.
  • Azure Cosmos had some interesting updates like the new multi-master write support. It also provides API support for MongoDB, SQL, Table Storage, Gremlin Graph, Spark, and Casandra.
  • Azure Search now integrates Azure Cognitive Services to provide built-in enrichment of content using AI models, and it enables immersive search experiences over any data.
  • The Fluent Design System which Microsoft first debuted at Build 2017, is expanding beyond Universal Windows Platform (UWP) apps and will be available for Windows Forms, WPF and native Win32 applications.
  • Windows Timeline is coming to iOS and Android.
  • Azure Functions updates: Durable Functions reaches general availability, and Azure Functions now leverages the App Service Diagnostics.
  • .NET Core 3.0 and .NET Framework 4.8 announced were announced, and .NET Core 3.0 is coming to desktop development (awesome!)
  • Visual Studio 2017 version 15.7 and the next update version 15.8 preview 1 were released.
  • Visual Studio App Center integration with GitHub.
    • Visual Studio IntelliCode announced, which brings you the next generation of developer productivity by providing AI-assisted development.

    This already feels like a lot but really it’s just scratching the surface. I’m looking forward to what is announced today in the keynote followed by more technical workshops and sessions.

    Enjoy!

    References

    https://developer.microsoft.com/en-us/events/build

    AIAzureDevelopment

    Using the Face API from Microsoft Cognitive Services (part 2)–Face Verification

    In part 1 of this series I showed you how to create a Face API subscription from Microsoft Cognitive Services and then use the Face API library to detect faces from an image. In this post we’ll expand on the previous to include Face Verification. Let’s get started.

    Picking up where we left off, we will want to detect the most prominent face from an image and then use the detected face and verify it to see if they belong to the same person.

    1. I refactored the code in the BrowsePhoto method to return an image that was selected. This method is then used by both the Identification and Verification images processes.

    2. I refactored the UI to show 2 different images files, so means there is now 2 click events to identify the person in the image and then use this identification to verify its the same person when we load up another image. Both of these events can be seen here:

    image

    3. Finally we will be using the Face API VerifyAsync method to check to faces and determine if they belong to the same person.

    image

    4. Now let’s run the application across a few images and see how well it performs with two images of me from different years. In the first result I have an image from 10+ years ago and the Face API has come back that its 66% certain it’s the same person.

    image

    How about using something more recent. In this next test run the Face API again detects its 75% certain its the same person.

    image

    Wrap up

    As you can see I’m able to use the Face API from Microsoft Cognitive Services to not only detect by also verify identity. The Face API provides other methods that can be used for grouping, people together and training it to recognize specific people with their identification method.The Face API has also recently been updated to support a large group of people (1,000 in the free tier and over 1,000,000 in the paid tier).

    Enjoy!

    References

    Sample Code

    Face API Documentation

    AIAzureDevelopment

    Using the Face API from Microsoft Cognitive Services (part 1)–Face Detection

    Earlier this month I wrote about giving your applications a more human side with Microsoft Cognitive Services, which provides a number of API’s that you can start using immediately in your applications. Today I’ll dive into the vision API’s and show you how you can leverage the Face API to detect faces in your images.

    What is the Face API?

    The Face API provides facial and emotion recognition and location in an image. There are 5 main areas for this API:

    – Face detection
    – Face verification
    – Find similar faces
    – Face grouping
    – Face identification

    Potential uses for this technology include facial login, photo tagging, and home monitoring. You can also use it for attribute detection to know age, gender, facial hair, whether the person is wearing a hat, wearing glasses, or has a beard. This API can also be used to determine if two faces belong to the same person, identify previously tagged people, find similar-looking faces in a collection.

    So let’s get started with creating an Face API resource and then a small application to detect faces. In the next post I’ll extend this example to do face verification to determine if it’s the same person.

    Step 1 – Requirements

    To get started with Microsoft Cognitive Services and specifically the Face API you will need to have an Azure Subscription. If you don’t have one you can get a free trial subscription which includes $250 of credits to be used for any Azure services.

    You will also need to have Visual Studio 2017 installed, which you can download for free.

    Step 2 – Subscribe to the Face API

    1. Log in to the Azure portal and click on the Create a resource link in top left corner. From here select AI + Cognitive Services and then select Face API as shown here:

    image

    2. Give your Face API a name, select your subscription, location, resource group and then select the F0 Free tie for pricingr:

    image

    3. After a few seconds your Face API subscription will be created and ready for you to start using. At this point you will need to get two items, your subscription key and your endpoint location.

    The endpoint URL is shown on the Overview section and your subscription keys are located under Keys in the Resource Management section as shown here:

    image

    Now that we have the subscription key and endpoint let’s create our application.

    Step 3 – Create new Application and reference the Face API

    1. Open Visual Studio and from the File menu, click on New then Project. From here you can select any type of application but for me I’m going to create a new WPF application in C#. This code will also work with Xamarin.Forms project if you wanted to try this out for mobile.

    image

    2. Go to the Solution Explorer pane in Visual Studio, right click your project and then click Manage NuGet Packages.

    3. Click on the Include prerelease checkbox and then search for Microsoft.Azure.CognitiveServices.Vision.Face. You might be wondering why are these API’s still in preview? Well the Cognitive Services API’s were previously called Microsoft.ProjectOxford.* and are now being moved over to Microsoft.Azure.CognitiveServices.*. Once that migration is complete they should be out of prerelease and is what you should be using from then on.

    image

    4.Now let’s go to the code and configure the Face API client library.

    Step 4 – Configure the Face API Client Library

    1. Open up your MainWindow.cs file and declare a new FaceServiceClient instance as shown here

    image

    2. Insert your Face API subscription key and endpoint. Replace “YOUR-SUBSCRIPTION-KEY-GOES-HERE” with your subscription key from step 2. Do the same for the second parameter which is your endpoint URL.

    Step 5 – Upload images, detect faces, and show facial attributes

    I wont walk through the entire code as you can do that on my GitHub repository. Instead in this step I’ll show you how I used the Face API to detect the faces, draw a square around each detected face, and finally show you the facial attributes when the mouse hovers over a detected face.

    It’s worth mentioning that the maximum size of the image to upload is 4 MB.

    image

    As highlighted above you will take a photo you have and upload it to the Face API where it will detect an array of faces. The largest face in the image is usually what is returned first in the array. Using the DetectAsync method, you have the option to pass in an IEnumerable of FaceAttributeTypes. Just declare a list of the attributes you want back in the results like so:

    image

    The second highlighted code shows were we store the facial attributes returned for each face. The GetFaceDescription method is used when you mouse over a detected face and you want to show the attributes that were returned from the Face API:

    image

    Now let’s run our application and try detecting some faces for an image containing one or more faces. After a few seconds the API will return back with the results. As you can see we’re drawing blue squares for the makes and pink for the females, and when you hover your mouse over one of the faces I’m displaying the description of all the facial attributes returned by the API.

    image

    Wrap up

    As you can see its very easy to add AI to your application with Microsoft Cognitive Services. Today I showed you how you can leverage the Face API for facial recognition.

    Enjoy!

    Resources

    Sample Code

    Face API Documentation

    Development

    Updates to the New Project Dialog in Visual Studio 2017

    With the release of Visual Studio 2017 Update 6 (version 15.6.x), you might have noticed that there was an update done to the New Project dialog to move the .NET Framework version selector down to the bottom below the solution name. This makes the New Project dialog cleaner and shows you which version of the .NET Framework will be used when creating your project.

    image

    The Framework selector disappears when selecting non .NET Framework projects like ASP.NET Core, UWP, etc.

    Enjoy!

    Development

    Getting Started with Application Insights for ASP.NET Core

    In my previous posts I gave a quick Introduction to Application Insights and then I showed you how to Disable Application Insights from your app. In this post I’ll walk you through creating an ASP.NET Core application and then configuring it with Application Insights. Let’s get started.

    Configuring your app for Application Insights

    Start by creating a new ASP.NET Core application (this also applied to non-core ASP.NET applications). Once the application is created right click on the project file in the context menu look for Configure Application Insights… and then click on it.

    image

    You will see that the SDK has already been added to your application. Next click on the Start Free button to start using Application Insights.

    image

    You will need to have an existing Azure Subscription. If you don’t already have one you can create one for free and start with a $250 credit for 30 days + you will have access to popular services for 12 months + there are over 25 services that are always free. Now that you have your Azure Subscription, login with your Microsoft Account, select your Subscription and then a Resource. These can always be easily changed later on if need be.

    You will now have access to the free plan which comes with 1 GB / Month of data included and data retention is 90 days. Click on he Register button to finish the configuration:

    image

    Now that Application Insights is configured for your application you have access to a wealth of information with the click of a button.

    sshot-372

    Accessing the Application Insights Telemetry from Visual Studio

    You can search your Application Insights results from either the Azure Portal or from within Visual Studio. To use Visual Studio go to the View menu, select Other Windows and then Application Insight Search. You will then get view of the telemetry for the last 24 hours as shown below from a sample API I have. From here you can filter the telemetry and dive down into specific events.

    image

    Another nice feature is that Application Insights telemetry data including any exceptions that have been captured will show up in the CodeLens information as shown here:

    image

    There is a lot of value from using Application Insights in any of your applications. I hope you take a look and try it out for yourself.

    Enjoy!

    References

    https://azure.microsoft.com/en-us/services/application-insights/

    https://docs.microsoft.com/en-us/azure/application-insights/app-insights-asp-net-core