Category: Development

DevelopmentReflectInsight

Preview of ReflectInsight.Core

Today we published our first draft of ReflectInsight.Core, a port of our ReflectInsight logging library for .NET Framework to .NET Core and we are making it open source on GitHub. We still have some things to iron out like setting up a CI/CD, NuGet package creation, a sample app, docs and some refinements to the code base.

So far is working in our labs and we will share more information with you soon.

image

Enjoy!

Note: This post was re-blogged at https://blog.reflectsoftware.com

References

https://github.com/reflectsoftware/reflectinsight.core/tree/master

Development

Introducing Plato.Core

Plato.Core-256

Today we’re pleased to announce the availability of Plato.Core, a port of our popular Plato.NET library for .NET to the .NET Core framework.

Plato.Core supports the following features:

  • Async/Await
  • Object Mapper
  • Memory Cache
  • Configuration
  • Messaging
  • Security
    • Serializers
    • Support for ActiveMQ
    • Support for RabbitMQ
    • Support for Redis cache

    To get started, search for Plato.NetCore on NuGet.org from within Visual Studio and Visual Studio Code. Take a look and let us know what you think and please contribute!

    Cheers,
    The ReflectSoftware Team

    References

    https://github.com/reflectsoftware/Plato.Core

    https://github.com/reflectsoftware/Plato.NET

    DevelopmentEvents

    Discover the world of .NET – .NET Conf 2018

    Discover the world of .NET for free this September 12-14, 2018 by attending the .NET Conf virtual developer event, which is co-organized by Microsoft and the .NET community. Over the course of the three days, you will have a wide selection of live sessions from .NET community and the .NET product teams. This is a great chance for you to learn, ask questions and get inspired for your next great project.

    You will learn to build for web, mobile, desktop, games, services, libraries and more for a variety of platforms and devices all with .NET. We have sessions for everyone, no matter if you are just beginning or are a seasoned engineer. We’ll have presentations on .NET Core and ASP.NET Core, C#, F#, Azure, Visual Studio, Xamarin, and much more.

    Join your fellow developers in a city near you, and learn more about the world of .NET, Azure, and Xamarin. To watch the sessions from last year, take a look at the 2017 sessions on demand from Channel 9.

    Agenda

    Day 1 – September 12

    8:00 – 9:30
    Keynote broadcasted from Microsoft Channel 9 Studios

    9:30 – 17:00
    Sessions broadcasted from Microsoft Channel 9 Studios

    17:00 – 18:30
    Virtual Attendee Party! Engage with our partners on Twitter and win prizes!

    Day 2 – September 13

    9:00 – 17:00
    Sessions broadcasted from Microsoft Channel 9 Studios

    17:00 – 23:59
    Community Sessions in local languages & time zones around the world

    Day 3 – September 14

    0:00 – 17:00
    Community Sessions in local languages & time zones around the world

    All times listed are in Pacific Daylight Time (UTC -7).

    Attend a Local .NET Conf

    In addition to the three day virtual event being held from September 12-14, there will also be some local events you can attend. Take a look at this page for locations and to register. In Canada we will have 2 local events in Vancouver BC and Mississauga ON.

    September 26, 2018
    Vancouver, BC, Canada
    Register Here

    October 25, 2018
    Mississauga, Ontario, Canada
    Register Here

    Run your own local event

    If you’re interested in running your own .NET Conf take a look at this link for details.

    Enjoy!

    References

    https://www.dotnetconf.net

    https://www.dotnetconf.net/local-events/

    https://github.com/dotnet-presentations/dotnetconf2018

    AzureDevelopment

    Connecting your code to the cloud with Visual Studio Connected Services

    With each release of Visual Studio it’s getting easier to connect your application to Azure services. To access Visual Studio Connected Services, go to your projects Overview which can be accessed by right clicking on your project and select Overview.

    image

    Then select the Connected Services tab on the left to show the list of Connected Services available in your Visual Studio instance. More connected services can be installed from either the Visual Studio Marketplace or from within Visual Studio by going to the Tools –> Extensions and Updates… menu item.

    image

    To configure a particular Connected Service, just click on it and follow the prompts to wire up the desired Azure service.

    Connected Services

    With the announcement of what’s new in for Azure Development in Visual Studio on May 30 2018, support for three more Azure services were made available:

    For a full list of available Connected Services take a look at the Microsoft Visual Studio Marketplace.

    Enjoy!

    References

    New Updates for Azure Development in Visual Studio

    Visual Studio Marketplace

    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!