Code-Review Reading List

Explore how to progressively expose your Azure DevOps extension releases in production to validate, before impacting all users.

I don’t know what else to say, the title kind of says it all. This post discuss the deployment rings of your application, basically rolling out changes in phases.

Route and process data automatically using Logic Apps

Microsoft Learn module on how to process data using Azure Logic Apps. This module includes exercise by creating Azure resource in sandbox.

Code Review Guidelines for Humans

Yet another code review post. I really like this one because it’s focused on the attitude or mindset that both author and reviewers should have in code review. This sets the common ground for better code review. Again, this is less about process itself. The article also suggests few framework to use, such as I-Message, OIR, etc.

How to Make Good Code Reviews Better

There’s a lot of science and art that go into code review. This post discuss how you can start with a good code review and bring it to better one. It’s less about code review process, but more of do’s and dont’s.

How to do a code review

Speaking about code review, this is more comprehensive guide to code review, from Google Engineering Practices. It’s a very long read, but worth the time. From the standard, guideline, to what to to look for, everything is covered.

Tuesday Reading List

Inventory Dashboards Using the Power of Azure Resource Graph

Ever wonder what are all the resources in your Azure environment? You can now use power of Azure Resource Graph to query all the resources (or filter based on certain criteria).

Capture Web Application Logs with App Service Diagnostics Logging

Ever confused what logs are available in Azure? Well, I’m too. Specfically for Azure App Service however, the learning module helps you understand what’s your options.

Improve the developer experience of an API with Swagger documentation

Use Swagger in your next API project and you won’t have to hand-written those documentations. Heck, even use it in your existing API projects! This learning module will teach you how to implement Swagger in your ASP.NET Core API


Never get enough of .NET Core 3.0? Well, these 10 articles should give you enough read for the week. From performance, migration to configuration, it covers lots of stuff you want to know about .NET Core 3.0.

The ultimate (free) CI/CD for your open-source projects

You probably already know, but maintaining open source project is difficult and take a lot of your time. So, if you could automate your CI/CD and it’s free? Sure, why not.

Weekend Reading List

10 commands you don’t want to be without in .Net Core

With the rise of .NET Core, it’s inevitable to learn about `dotnet` commands. `dotnet` commands are important just like how one would use `npm` when developing with NodeJS or Angular project. This is 10 most common `dotnet` commands.

QA Testers: Coding Is Your Must-Have Professional Skill

It has become more of a requirement nowadays that a QA tester needs to know how to code. It’s no longer clicking the pages or browsing mobile app. Coding skill is even more important than ever before. However, one thing still holds true: knowing how to think is still the key.

Safe .NET Feature Flags with FeatureToggle

Matt Eland discuss his open source library for feature flagging, called FeatureToggle. If you are looking for a feature flag library and haven’t used one, definitely give this one a look.

Action-Oriented C#

If you, like Matt Eland, have hit plateau on your C# skill because you’re so awesome, it’s time to take it to next level. This is Matt’s approach to incorporate aspect of functional programming to go to next level.

Differences between gRPC and RSocket

This post probably going to take you to lower level where you feel a lil bit uncomfortable. It’s informative read nonetheless. In short, they meant to solve different problem.

Good Reads This Week

DevOps Before and After Kubernetes

This is a fun read, a lil bit of educational, but more of informative IMO. Anoop explains how Kubernetes has changed DevOps: automation. And with idempotency and immutability, we can increase efficiency and economics benefits in DevOps-ing Kubernetes.


Exploring the Visual Studio Test Platform

34-minute video that goes back to basic: unit testing, why we need it and how to do it. But this one goes even deeper, how to do it in Visual Studio, Visual Studio Code and Azure Pipelines, executing tests in parallel, migrating, diagnostics crashes and much more! Worth your 34 minutes.


Think Like A Startup When Launching Your Analytics Program

Build your analytics program with startup mindset. Yes, it may not be a technical read, more of philosophical, but still a good read regardless.


Come discuss your side projects! [July 2019]

I thought this thread is pretty cool, people come together to discuss their own side projects. Get some creative ideas going and some of the projects are actually really cool! This thread is for July 2019, but there is a new thread every month.


ASP.NET Core 3.0 Exception Handling

Have you ever used `try/catch` blocks but still miss some errors? Dino explains a more effective way to trap exceptions that go unnoticed and unhandled in ASP.NET Core 3.0


Go team proposes parametric polymorphism

Generics is coming to Go language! Parametric Polymorphism, a fancy way to say Generics, however, is still in a draft. But, let’s hope it’s going to be released soon.

Shared Assembly in Visual Studio Projects

Here is steps to create shared assembly file in multiple VS projects:
1. Add new shared assembly file.
2019-06-10 16_38_40-LinqJoin - Microsoft Visual Studio (Administrator)

2. For each project that will use the shared assembly, right click on the `Properties` under the project and add existing item.
2019-06-10 16_43_15-

3. Select the shared assembly file, but add it as a link
2019-06-10 16_39_38-LinqJoin - Microsoft Visual Studio (Administrator)
2019-06-10 16_40_12-LinqJoin - Microsoft Visual Studio (Administrator)

4. Remove attribute in the project assembly that you want to inherit from the shared. For example, if you want to share `AssemblyVersion` across projects, remove them from projects’ assembly and add it shared assembly file.


using System.Reflection;

[assembly: AssemblyVersion("")]
[assembly: AssemblyFileVersion("")]

Azure Resource Manager

Azure Resource Manager Overview

Azure Resource Manager, or ARM, is a way to manage resources in Azure. With ARM, we will be able to define our platform, or infrastructure, as code.

One of the benefits of using code to manage platform / infrastructure is we can check in to source control to see different changes over time. It also allow us to reuse part of the code for other deployment.

Azure Resource Manager also have the following benefits:

  • Manage resources. Deploy, add, remove resources at ease.
  • Resource grouping. Group resource into logical set that makes sense to you, i.e.: environment, location, etc.
  • Resource dependencies. Handle dependencies between different resources.
  • Repeatable deployments. ARM template can be used to perform same. repeatable deployments.
  • Template. Using template and code to define platform / infrastructure. Template is also reusable.


With ARM architecture, there are few components. They are:

  • Resource providers. These are the functionalities of the resources, such as compute, storage, etc.
  • Resource types. The actual resource of Azure services that will be deployed.
  • ARM REST APIs. Allow invocation of ARM command thru its APIs.

In general, ARM template has the following structure:

  • Schema (required)
  • Content Version (required)
  • Parameter
  • Variables
  • Resources
  • Output

How it Works

You can also abstract out parameters for a ARM template to its own template parameter file. ARM template parameter must also have schema and version. The version doesn’t have to be the same with the template file.

In ARM template deployment, Azure automatically detect dependencies between resource types and deploy the dependent resource first. For example, if a template has specified to deploy App Service Plan and App Service Web Site, ARM REST API will deploy App Service Plan first, which Web Site depends on.

You can also specify dependency in ARM template as well as deploy resources simultaneously for services that don’t have dependency, i.e. deploying 4 App Service Websites.

Azure Resource Manager will only deploy resources in the template that are not yet exist. When you the specified resource already exists, it will be skipped.

Within ARM template, you can also specify to deploy the application itself, this is useful, for example, when the App Service Web Site deployment will include populating the website with web application from source control.