OAuth in Azure AD B2C with Nodejs

Recently we need to build a Nodejs single-page-application (SPA) solution that is using Azure AD B2C as the identity provider (idp). Since it is a single-page-application, we are going to use OAuth2 Implicit Flow.

picture credit:stormpath.com

This article demonstrates the basic steps for setting up both the server side (WebAPI) as well as the client application.

Read More

Share Comments

Using python to organize pictures

Problem

Having several digital cameras is fun: you can have different photography experiences.

However, organizing pictures is far less interesting, especially if you do not have a consistent process (like naming convention) for archiving. After several years, I end up with hundred thousand pictures sitting in messy huge folders:

  • Nikon_Pictures
  • Backup_SDCard01
  • 100_0302
  • DCIM_From_Old_Phone
  • 100CANON
  • Backup-Photo
  • etc…

The most tricky part, is that I have so many duplicate pictures everywhere due to inconsistent archiving during years. It is so messy that I never dare to manually clean them up.

picture credit: news.heart.org

Naturally, the knowledge of programming came to my rescue. This time, it is Python.

Read More

Share Comments

Tracking subdomains with Google Tag Manager

Recently I am investigating how to track user behaviors across our digital services.

We have web applications like:

  1. example.com (the company homepage)
  2. service-A.example.com (digital service A)
  3. service-B.example.com (digital service B)

and we are using Google Tag Manager (and Google Analytics)

Read More

Share Comments

Setup VIM plugin

Time to revisit my VIM plugin system after VIM is upgraded to version 8.0

Previously I was using Vundle but it is bit complicate to set up quickly. This time I am using vim-plug.

Read More

Share Comments

Jump-start ASP.Net Core with Docker

Environment Setup

I have a typical developers environment: Windows 10 Enterprise X64 (Version 1511, OS build 10586.839). Installed DotNet Core 1.0.1 and VS Code. In VS Code there are two extension installed.
VS Code extensions

Enable Hyper-V

VirtualBox is no longer needed! Simply enable the Hyper-V on on Windows 10 by running powershell commands (as Administrator)

1
2
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
DISM /Online /Enable-Feature /All /FeatureName:Microsoft-Hyper-V

You might need to change the BIOS setting. Read more at here.

Note:
The document from Docker also mentioned that the virtualization must be enabled, and said you can verify it in the Task Manager. However, I can not find “Virtualization” label in my Task Manager. But the following steps work fine anyway.

Install Docker

Head to Docker official site, download and install Docker for Windows. The version I installed was 17.03.1-ce, build c6d412e Community Edition, via Edge channel.

Lets verify it.
Verify Docker

Read More

Share Comments

Review and manage your web site disk space in Azure

Problem

We have a large distributed system which is hosted in Azure. The front end web application are Azure web sites.

From time to time, the web applications were down, due to running out disk space in the Azure web sites. Our operation team would like to quickly identify what are the large files and how we can free up disk space in Azure web sites.

Lucky, Azure application service already provides a nice tool for this type of work: Kudu service.

Read More

Share Comments

Announcing new version of DNV GL Rules Chatbot

Happy new year!

I am happy to announce the new version of Rules Chatbot is ready now. The key new features are below:

  • Support full text search (based on SharePoint Search)
  • Indexing DNV GL classification rules documents with enhanced metadata
  • Customized ranking
  • Upgraded to Bot Framework 3.0

URL:
https://dnvgl-rules-bot.azurewebsites.net

Read More

Share Comments

No agent pool found with identifier 0 error when setup build agent in VSTS

Problem

We cannot register a private build agent on VSTS by using a service account. This service account has created Personal Access Token with expiration for 1 year and authorization for all scopes.

Whenever we run the config.cmd, then connecting to the server, type the Agent Pool and Agent Name, configuration command throws error.

No agent pool found with identifier 0.
Failed to add the agent.  Try again or ctrl-c to quit
Error: No agent pool found with identifier 0

However, with the same build server and with another developer’s account, it works fine and the build agent is up and running.

Read More

Share Comments

Work with custom event in Application Insights

Application Insights can offer you lots of built-in telemetries such as Page Views and Exceptions. But quite often we need to track some customize/business performances. Some examples that we are using now are:

  • SharePoint crawled items from content source X
  • Daily usage of a web application of all users from company ABC
  • Usage and performance of different version of API

To meet these challenges, Application Insights offers API for custom event and metrics.

In this article I will show how to monitor and analysis API performance by using custom events, including export it into external database for archiving and future analysis.

Read More

Share Comments

Web/Load testing against an ADFS federated application

In Application Insights, you can create an availability web testing to monitor the availability of a web application. It supports 2 type of testing:

  • URL ping test: a simple test that you can create in the Azure portal.
  • Multi-step web test: which you create in Visual Studio Ultimate or Visual Studio Enterprise and upload to the portal.

Normally it is easy to setup ping test and multiple step testing against a public site.

However, in order to have a multiple step testing against an ADFS federated application, you will have to do some extra in order to take care of the authentication part.

Read More

Share Comments