dotNetTips.Utility.Standard NuGet Packages Quarterly Release (Q3 2019)

The 3rd quarter release of the dotNetTips.Utility.Standard NugGet packages has been released. These packages contain common code for Microsoft .NET that I use every day and I hope you do too.

PackageVersionRelease notes
dotNetTips.Utility.Standard2019.8.31.1 Code & documentation cleanup. Code fixes. New code in LoggingHelper, ComputerInfo.
dotNetTips.Utility.Standard.Extensions 2019.8.31.1 Code & documentation cleanup. Code fixes. New code in CollectionExtensions.
dotNetTips.Utility.Standard.Tester 2019.8.31.1 Cleanup of models including fixes.

Do you have code that you would like to be added to these assemblies? Please make add an issue on GitHub.

View original post


#VSCode – Let’s do some #Git dev in #RaspberryPi (GitHub and Azure DevOps!)

Buy Me A Coffee


In my previous posts I wrote about how to prepare a developer station with a Raspverry Pi 4. I wrote on how to install Visual Studio Code, how to install .Net Core and how to build and run C# projects. Of course, the next step is to work with Git.

The command to install git is

apt-get install git

However, I already have Git installed. I haven’t checked, but it seems to me that the latest Raspbian distro includes by default git. I was hoping that VSCode will recognize and use this, but in order to work with Git in VSCode I need some extra work in the IDE settings.

raspberry pi git installed but not integrated in visual studio code

I was able to clone some repositories from GitHub and Azure DevOps, directly from bach

raspberry pi 4 git clone azure devops repository

So, let’s fix Visual Studio Code and Git integration. This one is very easy, I just need to go to Settings, search for Git and define the Git path for VSCode.

raspberry pi 4 visual studio code preferences git

In order to find the git path, we need to use the [which] command

pi@rpidev3:~ $ which git


My got location is [/usr/bin/git].

I’m not a command line dude! I like User Interfaces, so now it’s time to open one of the cloned repositories in Visual Studio Code. I can see that VSCode recognices Git and I can start to commit my files.

raspberry pi 4 visual studio code using git

This is also a perfect moment to define Git user name and user email.

git config --global "" 
git config --global "your name"

I like to do this in the Terminal in VSCode, just to check all is working fine.

Happy Coding!

Greetings @ Burlington

El Bruno


First Azure Kinect App–VIDEO- Getting Depth and Color camera

Ivana Tilca Blog


This article if part of a serie of “How to” create Apps with Azure Kinect DK. Yesterday I posted the first Part of this serie. Including:

  • Connect and open our Device
  • Configure our camera
  • Start our camera
  • Stop our camera
  • Dispose our Device

Today I am excited to dig in the theory of the configuration of our camera. As you saw in first post we had the following configuration.


k4a_device_configuration_t config = K4A_DEVICE_CONFIG_INIT_DISABLE_ALL;
config.camera_fps = K4A_FRAMES_PER_SECOND_30;
config.color_format = K4A_IMAGE_FORMAT_COLOR_MJPG;
config.color_resolution = K4A_COLOR_RESOLUTION_2160P;
config.depth_mode = K4A_DEPTH_MODE_NFOV_UNBINNED;


DeviceConfiguration config = DeviceConfiguration.DisableAll;

.CameraFps = FrameRate.Thirty;

.ColorFormat = ImageFormat.ColorMjpg;

.ColorResolution = ColorResolution.R2160p;

.DepthMode = DepthMode.NarrowViewUnbinned;

But the thing is… what did we configurate in here?

“Camera Frames Per Second.”

FPS is used to measure frame rate – the number of consecutive full-screen images that are displayed…

View original post 509 more words

#Event – Great news for #GlobalAINight: new venue and final Agenda for Toronto

Hi !

The Global AI Night is a free evening event organized by 93 communities all over the world that are passionate about Artificial Intelligence on the Microsoft Azure. During this AI Night you will get inspired through sessions and get your hands dirty during the workshops. By the end of the night you will be able to infuse AI into your applications.

Please check the register link to find the NEW AMAZING VENUE we had:

And this is the final agenda


Creating applications that can see, hear, speak, understand and even read !

using Microsoft Cognitive Services. In this workshop you will be introduced to the Microsoft Azure Cognitive Services, a range of offerings you can use to infuse intelligence and machine learning into your applications without needing to build the code from scratch. We will cover pre-trained AI APIs, such as computer vision and text analytics, that are accessed by REST protocol. We will also feature one of the most recent and powerful Services: Form Recognizer. Form Recognizer applies advanced machine learning to accurately extract text, key/value pairs, and tables from documents. With just a few samples, Form Recognizer tailors its understanding to documents. Wrapping the workshop up by building our custom trained AI into an application

Introduction to ML.Net and AutoML

ML.Net is an open-source and cross-platform machine learning framework for .NET developers. Using ML.Net , developers can leverage their existing tools and skillsets to develop and infuse custom AI into their applications by creating custom machine learning models for common scenarios like Sentiment Analysis, Recommendation, Image Classification and more. AutoML (Automated Machine Learning) is a collection of new technologies from Microsoft to enhance the data science development process.
In this workshop you will be introduced to the core features and scenarios of ML.Net and also to the preview feature of Model Builder for AutoML.

Happy coding!

Greetings @ Toronto

El Bruno

#VSCode – Build and Run C# #DotNetCore projects in #RaspberryPi


Time to move on with some lessons learned using Visual Studio Code in the Raspberry Pi 4.

One of the first issues you may find working with VSCode in the device is related to file write permissions when you are saving a file.

I raspberry pi 4 visual studio code failed to save file

So, it was a good opportunity for me to learn about files and folder permissions in Linux. I found a great starting article “How to Manage File and Folder Permissions in Linux” (see references), and it allowed me to fix this issue.

My next error was triggered when I try to build my project. Again, it was a permission related error.

error MSB3021: Unable to copy file "obj/Debug/netcoreapp2.2/dotnethelloworld.dll"
to "bin/Debug/netcoreapp2.2/dotnethelloworld.dll". Access to the path
is denied. [/home/pi/dotnethelloworld/dotnethelloworld.csproj]

However, this time the fix was not related to file and folder permissions.

One of the solutions I found, was to run VSCode with admin privileges. This is probably one of the worst ideas ever, and you can find tons of articles explaining why this is bad (see references).

Anyways, I decided to give it a try. Of course, it worked. Let me share how.

I run VSCode with the following command, which runs the app in root mode.

code-oss --user-data-dir=/home/pi/dotnethelloworld
raspberry pi 4 visual studio code run as root

The VSCode team is aware of this, so you will find a warning about this scenario

raspberry pi 4 visual studio code run as root warning

Even so, you can still use VSCode to edit and build C# .Net Core Projects.

raspberry pi 4 visual studio code build code

And you can run them also

raspberry pi 4 visual studio code build and run edited code

So far, so good. Or maybe not, broken a lot of good practices. I’ll see this as an amazing chance to learn and test new stuff!

Happy coding.

Greetings @ Burlington

El Bruno


Azure Kinect–Loading the RGB Camera with the new SDK 1.2–WPF – Part 2

Ivana Tilca Blog


Welcome to the part two of this series of posts i will be writing about Azure Kinect. This post is special because yesterday Microsoft launched Azure Kinect Sensor SDK 1.2 update. It includes support for C#, color exposure get & set API fixes, public availability of C++ playback API, and firmware updates for improved USB compatibility.

Before we start programming this part of our tutorial. I will first update the code I did in my previews post in which i used the NuGet package: developed by Andrey Bibichev. We started by following some of the basic steps described in this image.


Code using the package K4AdotNet

1 . Open VStudio

2 . File > New WPF App .net Application

3. Select the Project > Properties > Build and make sure option “Prefer 32-bit” is disabled

4 . Manage Nuget Package

5 . Browse > Type and select:…

View original post 736 more words

#RaspberryPi – How to install #DotNetCore in a #RaspberryPi4 and test with #HelloWorld (of course!)


During the next couple of months, I’ll be sharing some amazing experiences around AI. Some of these experiences includes IoT devices like a Raspberry Pi, and of course some Machine Learning.Net (ML.Net). Because ML.Net is built with .Net Core, it makes sense to share the 5 simple steps you need to do to install .Net Core in a Raspberry Pi.

Of course, my 1st try was to navigate to the official .Net page (see references), which automatically detect my Linux distro and proposes a set of x64 SDKs.

raspberry pi 4 .net tutorial page with linux distribution options

I’m completely sure that I’m working in a 32 bits environment, however I’ll double check this with the following commands

sudo apt-get install lshw

After installing lshw I confirm that I’m in a 32 bit environment

raspberry pi 4 lshw information on 32 bit environment

Bonus: lshw is a small tool to extract detailed information on the hardware configuration of the machine. It can report exact memory configuration, firmware version, mainboard configuration, CPU version and speed, cache configuration, bus speed, etc. on DMI-capable x86 or IA-64 systems and on some PowerPC machines (PowerMac G4 is known to work).

Now I need to navigate to the download page to download the specific Linux 32-bit version (see references).

Once I got the image downloaded its time to extract the file on a specific folder. I’ve created a folder named “dotnet” with the following command

sudo mkdir -p dotnet

And to extract the image from the Downloads folder

sudo tar zxf dotnet-sdk-2.2.401-linux-arm.tar.gz -C

Let’s create a symbolic link to the extracted binaries

sudo ln -s /home/pi/dotnet/dotnet /usr/local/bin

And it’s done! Let’s invoke the .DotNet help command to test it

raspberry pi 4 .net core 2.2 installed and test dotnet help

Now we can follow the steps of [.NET Core on Raspberry Pi, see references] to create a Console Application and to test the device.

To create a new console App

dotnet new console
raspberry pi 4 .net core 2.2 create new console app

And test the app

sudo dotnet run
raspberry pi 4 .net core 2.2 console app run

We can publish the app for linux / raspberry pi

sudo dotnet publish -r linux-arm

And copy the generated folder to be used in another device

raspberry pi 4 .net core 2.2 console app build and publish folder to reuse

So next steps will be some other tests with Raspberry Pi and .Net Core. And the following image is a big teaser of this

raspberry pi 4 .net core 2.2 console app edit in Visual Studio Code

Happy coding!

Greetings @ Toronto

El Bruno


Xampane, nuevos Layouts para Xamarin.Forms

Javier Suárez | Blog

Layouts en Xamarin.Forms

A la hora de organizar y posicionar los elementos visuales que componen la interfaz de usuario en Xamarin.Forms, hacemos uso de Layouts.


Tenemos una enorme variedad de Layouts en Xamarin.Forms. Podemos posicionar de forma absoluta; de forma relativa; apilar elementos; etc. Con un uso correcto de los mismo se pueden cubrir la mayoría de necesidades pero…¿qué ocurre cuando no nos encaja al 100%?.

Por ejemplo, si necesitamos posicionar botones circulares alrededor de una imagen circular (perfil de usuario), ¿que Layout nos encaja?. Podemos conseguir nuestro objetivo con los Layouts disponibles pero probablemente con ajustes específicos para posicionar cada elemento. ¿Podemos conseguirlo de forma más sencilla?.

Creando Layouts

Un Layout es una clase que deriva de View. Podemos crear Layouts personalizados en Xamarin.Forms con clases que hereden de Layout<T>.

public class MyCustomayout : Layout<View>


Antes de continuar, vamos a repasar algunos…

View original post 898 more words

The beginners guide to AI in the workplace with Office 365

This one fits perfect with my series of Office AI posts !

One of the biggest struggles employees are facing in today’s world of a digital and modern workplace is – fear. Fear of changing the way we are accustomed to working, the way our brains think, the way we complete repetitive tasks, and the fear of allowing a machine, an intelligent machine, to take over jobs.

When most of us hear the word “AI”, the mental image is dark and unwelcoming.

I dedicated this post to all employees who are hesitating to change the way they conduct their day to day tasks, to leaders who are struggling to communicate Office 365, and to all those who just don’t want to change!

I would like to share my tips on how I shed light on machine intelligence, to cast away the darkness, and embrace the new age of a digital and modern workplace.

Before I start – did you know there is…

View original post 613 more words

Categorize iris flowers using k-means clustering with ML.NET

Machine learning with Human

This tutorial illustrates how to use ML.NET to build a clustering model for the iris flower data set.

In this tutorial, you learn how to:

  • Understand the problem
  • Select the appropriate machine learning task
  • Prepare the data
  • Load and transform the data
  • Choose a learning algorithm
  • Train the model
  • Use the model for predictions


Understand the problem

This problem is about dividing the set of iris flowers in different groups based on the flower features. Those features are the length and width of a sepal and the length and width of a petal. For this tutorial, assume that the type of each flower is unknown. You want to learn the structure of a data set from the features and predict how a data instance fits this structure.

Select the appropriate machine learning task

As you don’t know to…

View original post 1,241 more words