I started to learn C# and develop application on .NET when I started my job. .NET has been rapidly evolved, which can be used to develop almost everything, from mobile apps with Xamarin, IoT modules with Azure IoT Edge, Web App with ASP.NET & Blazor, and even machine learning projects using ML.NET.

The best part? Open source and cross platform!

Homepage of .NET

Web App is my first option whenever I develop new stuff, because it will just run fine on almost every platform, regardless of form factor and OS. …


Microsoft operates a massive network infrastructure around the globe to support all cloud businesses, including Azure, Microsoft 365, Dynamics 365, Xbox, and more. The datacenters span across multiple continents to serve everyone in the world, cutting across more than 60 Azure regions.

Captured from: Global Network — Backbone Networking Infrastructure | Microsoft Azure

To ensure best performance, Microsoft has built more than 130,000 miles of lit fiber optic and undersea cable. To put the measurement into perspective, if we align the cables into a straight line, it can circle the Earth for more than five rounds. …


Azure Instance Metadata Service (IMDS) provides information about the current running virtual machines, such as OS, computer name etc. Administrator can also access similar information from Azure Portal directly, hence IMDS is not commonly used.

IMDS in a nutshell, is a REST API on a non-routable IP address (169.254.169.254), and this endpoint is only accessible from within the VM. Here’s the sample command to retrieve metadata about this VM:

curl -H Metadata:true --noproxy "*" "http://169.254.169.254/metadata/instance?api-version=2020-09-01"

Here’s the sanitized version of response.

In a secured environment, we always advocate least privilege principles, and minimize passwords in clear text form. In…


Blazor, an open-sourced web framework developed by Microsoft is released in 2018. It allows C# developers to extend their expertise on C# to develop web application, without learning new languages such as JavaScript, which is the core programming language for most of the web application. Of course, Blazor can also interop with JavaScript if necessary.

Fast forward 2 years later, .NET 5 is released and there are tons of exciting capabilities introduced for Blazor, such as CSS Isolation, JavaScript Isolation, Lazy Loading etc. The breaking changes are documented here: Breaking changes in .NET 5.0 — .NET | Microsoft Docs

For…


I had my very first smartphone when I’m 17. It’s a 3.2inch HTC Wildfire, with 512MB RAM, just for comparison, a $35 Raspberry Pi 4 is more “powerful” than this little device, but it changed the way I interact with the world.

A small device on your hand which allows you to access to anything with a single click, a new way of interacting with the world via mobile apps. As I recalled, my home is not WiFi enabled back then, hence I enjoyed going to my friend’s house, or used public WiFi to enjoy this little piece of technology.

My very first smartphone, HTC Wildfire, beside a Raspberry Pi 4, which is more powerful in today’s context.


One of the common use cases for Azure Blob Storage is to store static files that is meant to be shared externally or serve as a download site to retrieve documents. It’s an effortless way to distribute content to intended users.

I used a lot when I’m sharing big files with my customers. It’s simple to setup, all I need to do is to create Azure Storage, set access level to public, upload files and voila I’m done.

However, this method will not work in enterprise world, because it’s exposes to bad actors who could write a script to generate…


I first exposed to container platform when I’m building demos for Azure IoT Edge. I’m fascinated by container technology after spending some time on containerizing my applications and gain the agility to deploy these workloads to edge devices.

Then, I started my exploration on Kubernetes as it’s one of the most popular container orchestration platforms. After reading an interesting Kubernetes analogy and explanation by Brendan Burns, I decided challenge myself and complete both CKAD (Certified Kubernetes Application Developer) and CKA (Certified Kubernetes Administrator) exams by this year.

Preparation 📚

Fast forward 4 months later, I received my CKAD certification and would like…


One of the main differences between cloud and on-premises is the agility, including accessibility to the infrastructure environment. In on-premises, we can either access the infrastructure physically, or get dedicated machines with connectivity to access datacenters and perform provisioning. However, in the cloud world, the provisioning is one account away. Without the right access control in-placed, anyone can access the environment and perform unintended actions.

Principal of least privilege still applies in cloud, despite the agility and flexibility that cloud platform provides. …


I was replying an email and included URL in my response to customers. Some of my customers work in an internet segregated environment, hence they need either forward the emails to access from another machine, or manually type the URL on internet accessible device.

An idea stroke me one day. I always wanted to use URL Shortener and here is my wish list:

  1. Able to access programmatically
  2. Able to customize the URL, or random generate
  3. No tracking, privacy is necessary
  4. Zero cost to low cost

Surprisingly, it is not easy to find one, hence I decided to build my own…


Blazor is a single page application (SPA) framework developed by Microsoft, and it allows C# developers to develop a web application using C#, HTML and CSS for both frontend and backend. Blazor is new, compared to other framework like Angular, React, Vue and more.

Blazor is appealing to C# developers as developers can reuse their existing knowledge on C# to create application. Besides that, Blazor has built-in JavaScript interoperability, which means developers can leverage on existing well-developed JavaScript packages in Blazor application.

One example is data visualization packages such as Chart.js,

Marcus Tee

Curiosity driven, continuous learning. Knowledge explorer. GitHub: https://github.com/guangying94

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store