Photo by Jason Dent on Unsplash

In this post, I outline a few fundamental concepts I have learned about an Observable and how it is different than a Promise.

Before discussing the differences between an Observable and a Promise, let’s talk about what they have in common. Both Observables and Promises are frameworks for producing and consuming data. They follow the push protocol which means the producer determines exactly when to send the data to the consumer. In comparison, in a pull protocol, the producer only produces data when the consumer asks for it.

In a Promise, the consumer is the resolve callback that you pass…

Photo by Shopify Partners from Burst

I have a back-end-for-front-end application which I scaffolded using Visual Studio. The backend is an ASP.NET core web API, and the front end is Angular. In the angular application, I have Cypress end-to-end tests that I want to run as part of a build pipeline. Accomplishing the objective requires a few things. For instance, I need to install Cypress binaries on the build agent. I also need to start the angular app to which the tests can run again. Installing Cypress binaries is a lengthy process, and with other steps, the entire build can take a long time to finish…

Image by Gerd Altmann from Pixabay

In the previous post, I talked about using self-service sign-up via user flows to onboard an external user. With self-service sign-up, you can integrate with custom REST endpoints to implement approval workflows and other business logic. I’ve learned of another way to onboard and manage a user’s access by using Entitlement Management, which has built-in rich approval workflow and access lifecycle so you don’t have to build additional APIs to implement an approval workflow.

What is Entitlement Management

Microsoft has a good description of what’s entitlement management:

Azure Active Directory (Azure AD) entitlement management is an identity governance feature that enables organizations to manage…


Image by Gerd Altmann from Pixabay

Microsoft has added several great features to help with managing identity and access of an external user in B2B collaboration. One such feature is the Azure AD Self-Service Sign-Up via user flows for an external user to sign up as a guest user in the host Azure AD tenant. I found the feature to be promising, but at the time of writing, it’s still in preview and have limitations.

What is Self-Service Sign-Up via user flows?

The self-service sign-up provides several configurations for capturing information about the user on sign-up, integrating with social identity providers (Facebook, Google and other SAML/WS-Fed IdP), and integrating with custom REST APIs…

Image by S K from Pixabay

In one of the core projects I worked on, I used iTextSharp.LGPLv2.Core to programmatically fill out a PDF form. Sometimes, we have a string that is too long to fit within the rectangle area of the text field. After a bit of googling, I found and adopted the solution in this StackOverFlow to solve this problem by dynamically compute the appropriate font size I can use so that the value can fit within the field.

The logic is fairly straightforward.

  1. Find the current font size and width of the text field.
  2. Compute the width of the value using the…

The repository pattern is a common pattern for accessing data from a database and converting the data into an entity. The repository pattern is property the one I have used the most. But just recently, I started reading more on the different design patterns and realized a few things I did not know or misunderstood about the pattern.

Domain entity vs domain model

At some point, when starting a project from scratch, I was confused about the differences between entity and domain. I saw certain projects use entity whereas others use domain when naming the namespaces. I thought domain entity and domain model are interchangeable…

In the past, I had been working on applications that were multi-layered / multi-tier applications. However, I had not recognized the terminologies as well as the subtle differences between multi-layered and multi-tier architectures and some of the pitfalls one may want to watch out for when implementing the pattern.

Multi-layer architecture

Below is an example of the layers in a web application :

For the purpose of discussion, let’s pretend we have a fictitious Educator Tools application which is designed to help principals with managing high school students.

  • The Presentation layer represents the graphical user interface for the user to interact with…

Photo by Wiredsmart from Pexels

This post continues from previous posts which I go over using oidc-client-js to interact with azure adb2c:

In this post, I’m going to share how to handle resetting password.

You can find the sample project here.

Create the reset password user flow

At the time of writing, Azure ADB2C has a predefined, standard version of the reset password flow. However, Microsoft recommends using a new version of the reset password flow, as Microsoft no longer updates and maintains the standard versions. …

Image by congerdesign from Pixabay

I recently worked on migrating users’ accounts in an existing SQL database to Azure AD B2C. I found some helpful articles from Microsoft that document different migration approaches and offer example codes on using Microsoft Graph SDK to manage the users. You can find the links to these articles and sample projects in the References section.

For the most part, I did not have much trouble with the basic CRUD operations. However, I had a bit of difficulty working with custom attributes and retrieving a user by email. In this post, I’m going to share some tips and caveats I…

Published October 31, 2020 in Java

Image by Free-Photos from Pixabay

I want to share this familiar but cryptic error I experienced when opening certain PDFs which were streamed from a Java web application.

Tai Bo

Backend developer in .NET core. I enjoy the outdoor, hanging out with good friends, reading and personal development.

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