C# Tuple

I have recently found this C# feature and found it interesting, let’s take a look.

C# tuples are types that you define using a lightweight syntax. Basically, it gives you the opportunity to define data structures with multiple fields without the complexity of using classes.

Please look at the following example.

(string, int) tuple = ("Hello", 1);
Console.WriteLine($"Tuple with elements {tuple.Item1} and {tuple.Item2}.");
// Output:
// Tuple with elements Hello and 1.

Optionally, you can define the field names.

(string Text, int Count) tuple = ("Hello", 1);
Console.WriteLine($"Tuple with elements {tuple.Text} and {tuple.Count}.");
// Output:
// Tuple with elements Hello and 1.

Another interesting feature of tuples is the support for equality operators.

(string Text, int Count) left = ("Hello", 1);
(string Text, int Count) right = ("Hello", 1);
Console.WriteLine(left == right);
// Output:
// True

Also, you can assign tuples to each other. Keep in mind that tuples must have the same number of fields and the values must be implicitly converted.

(int, double) tuple1 = (17, 3.14);
(double First, double Second) tuple2 = (0.0, 1.0);
tuple2 = tuple1;
Console.WriteLine($"{nameof(tuple2)}: {tuple2.First} and {tuple2.Second}");
// Output:
// tuple2: 17 and 3.14

Now, I must say that you should not go crazy with tuples; replacing separate classes with tuples because you will save a few lines of code it is not a good idea, so before implementing tuples in your code base make sure to document their usage for scenarios where they could be helpful without sacrificing your code quality.

A tiny overview at tuples, but share your thoughts.

For more information about tuples visit Tuple types – C# reference | Microsoft Docs.

AZ-900 Microsoft Certified: Azure Fundamentals – How to Pass

So, I have just passed Exam AZ-900: Microsoft Azure Fundamentals

For all of you that are thinking of taking this exam, here is how I passed, just 2 steps:

Step 1: Microsoft Learn: Learning Paths

Microsoft offers Azure Fundamentals Learning Paths for free in Microsoft Learn, I studied this material, part 1 to 5; this is the recommended online training for this exam from Microsoft.

Microsoft Certified: Azure Fundamentals – Learn | Microsoft Docs

Step 2: Microsoft Azure Fundamentals Certification Course (AZ-900) video from freeCodeCamp

I really liked the structure of this video; it allows you to go through a lot of Azure concepts divided in small capsules (2-5 minutes) which give you a good overview of Azure.

And that’s it, that’s the preparation I had before presenting the exam.

However, I must say that I had a little of hands-on experience with Azure myself and even though I don’t have experience with every topic from the exam, it definitely helped. So, if Azure is completely new for you, you should consider adding a few more elements to your exam preparation.

Here are some ideas from a colleague that presented the exam and nailed it!

JuniorLearnsToCode: How to Pass AZ-900 Azure Fundamentals Certification Exam

Good luck!

Xamarin Hello World

Xamarin, a platform for building Android and iOS apps with .NET and C#. It is Free, it is cross platform and it is open source; so let’s get started at the very basic, a good old-fashioned Hello World.

Setup

The first thing you need to do is to set up your development environment, start by downloading Visual Studio 2019 if you don’t have it already and make sure to select Mobile development with .NET workload during installation.

If you’re already a .NET developer it is very likely that you already have installed Visual Studio, if this is your case and you haven’t included this workload over the initial installation you can add it by opening the Visual Studio Installer. Select your Visual Studio 2019 installation and select More > Modify; check the Mobile development with .NET and click Modify.

Create app

Ok, now we are ready to create our app! As simple as following the next steps.

  1. Open Visual Studio 2019.
  2. Select Create a new project.
  3. Select Mobile from the Project type drop-down.
  4. Select the Mobile App (Xamarin.Forms) template and click Next.
  5. Enter HelloXamarin (or whatever name you’d like) and click Create.
  6. Select the Blank template. Ensure Android and iOS are both selected, and click OK.

Visual Studio will prompt you to install the Android SDK if it is not already installed.

Run

Once Visual Studio finishes downloading required SDKs and restoring NuGet packages let’s run our app.

Click Run on Android Emulator. Since it is the first time, you will be prompted to create a new device; you can just click Create and go with the default settings or customize it your way.

Once VS is finished downloading device image you should be able to start your emulator, wait a few seconds for it to start and click Run again.

It’s alive! Now let’s go for that promised Hello World.

Hello World

Another cool feature about Xamarin is XAML Hot Reload, this means you can make changes to your XAML files while the application is running and the UI will update automatically.

So let’s open MainPage.xaml from the Solution Explorer and let’s replace the text Welcome to Xamarin.Forms! with our Hello World! and remove the unnecessary code.

Save the file and magic! That’s it, we have our Xamarin Hello World app running in our emulator.

Posted in Dev

Fix GET /apple-touch-icon.png 404

After successfully publishing my first Blazor app, I started getting a bunch of 404 errors on my application insights dashboard.

What are these errors? Why? What does this mean?

Well, it turns out, Apple devices make those requests assuming your apple-device-optimized website will contain these files. These files are used by the device when the users bookmark your site to their home screen. If you don’t provide these files, your site icon will be an ugly screenshot of your site.

Ok, how do I fix it?

It’s a simple fix, just upload a single 180x180px PNG image to your website root and declare it in the head of your site.

<link rel="apple-touch-icon" href="apple-touch-icon.png">

That’s it! Say goodbye to those 404 errors.