Google Adsense How to Verify PIN Address

Suddenly when I logged into my Google Adsense account, Google asked me to verify my address before they can proceed any payment.

I was looking where to do it and what address I used but it is really hard to find the manual.

So I do this article with screenshots so easy for others to find and do it.

1. Verify Your PIN Address

If you have this message, then you have to verify your address.

Your payments are currently on hold because you have not verified your address.

i. Go to you dashboard @ Home

google adsense home dashboard
google adsense home dashboard

ii. Scroll Down till you find “Todo – Verify your Billing Address”

google adsense verify address
google adsense verify address

iii. If you already receive your PIN, you can key in the 6 digits by clicking verify.

2. Where To Know What is Your Billing Address

i. Check your primary user first because Google will send to primary user. (Click Account > Access & Authorization > User Management)

google adsense - user management
google adsense – user management

ii. Click on your profile on top right and click my account

google account - manage account
google account – manage account

iii. Click Payment & Subscriptions > Manage payment methods

google account - payment and subscriptions
google account – payment and subscriptions

iv. Click Address

google account - manage address
google account – manage address

Happy New Year 2021 From Genting Highlands view from Windmill Upon Hills

Happy New Year 2021! This year, unfortunately no fireworks. But it has beautiful thick fogs surrounding Windmill Upon Hills at Genting Sempah.

At new year eve, at first you can see Geo 38 Residence but around 930PM the fog became very thick and couldn’t view Geo 38. This happens even till morning of 1st Jan 2021.

new year 2021 eve fog around 9pm
new year 2021 eve, fog around 9pm
new year 2021 eve thick fog around 9pm
new year 2021 eve, thick fog around 930pm

TypeScript Convert unknown[] to number

I use knex to update and returning number of rows been updated. It seems that knex returning update return unknown[]. But when I do checking using typeof it is actually number.

But apparently Typescript not allowed me to simply convert it.
So below is the solution.

 //change the unknown[] to number[]
 const result = await as number[]; 
 //check if result is array, and do proper conversion
 const result1 = (Array.isArray(result)) ? result[0]: result;

Stop Motion Animation For Kids

I was watching Netflix Holiday Movies with Liesha. The show was about The Nightmare Before Christmas.

The movie was made using stop motion technique. Knowing Lisha loves arts, I challenged her to do stop motion and asked her to do some studies before doing one.

Below are the outcomes after her studies.

Lego & Others Stop Motion By Liesha

Bridge Stop Motion By Lisha, Deef and Dien

After Dien and Deef saw the Lego Stop Motion they were also interested and did the stop motion together.

Dien: building the bridge
Deef: Photographer and videographer
Lisha: Director

making of stop motion by kids
making of stop motion by kids

Genting Utilities & Services Sdn Bhd Contact Number

I hava a condo unit at Genting Highlands. The electricity at Genting Highlands is supplied by Genting Utilities Services Sdn Bhd. When I searched the internet, I couldn’t get their contact number.

Fortunately found the contact number on their utilities bill. So sharing this info for anyone who haven’t got their first bill and who have inquiry.

Contact Details

Billing Matters: 03 2333 6265 / 6810

Payment Matters: 03 2333 6246

Technical / Utility Meter Matters: 03 6105 2039


Unifi Mesh Wifi Booster Package Comparison

Everyone must have been facing weak wifi coverage inside their home including me. That is why I’m considering installing mesh wifi booster.

Unifi Mesh Wifi Booster Package

Unifi offers mesh wifi TP Link Deco M9 (3 pack) package at RM35 per month for 24 months totaling at RM840.

For TP Deco M4 (2 pack), Unifi offers RM15 per month for 24 months and totaling at RM360

I did comparison which one is better buying upfront from any IT hardware shop or paying monthly to Unifi.

Buying Upfront of TP Link Deco Mesh Wifi

All IT Hypermarket is selling Deco M9 plus (3 pack) at RM1,269

deco m9 tp link mesh wifi
deco m9 tp link mesh wifi

For Deco M4, All IT Hypermarket is selling it at RM379.

tp link deco m4 mesh wifi booster
tp link deco m4 mesh wifi booster


 Unifi Mesh Wifi PackageBuy Mesh Wifi Device Upfront
M9 - PriceRM840RM1,269
M9 - Price difference (Unifi Mesh as baseline)0+RM429
M9 - Percentage difference (Unifi Mesh as baseline)0%+51%
M4 - PriceRM360RM379
M4 - Price difference (Unifi Mesh as baseline)o+RM19
M4 - Percentage difference (Unifi Mesh as baseline)0%+5.3%


Deco Mesh Wifi M9 (3 pack)

Unifi Mesh Wifi is worth to subscribe to as it is 50% cheaper vs buying upfront.

Deco Mesh Wifi M4 (2 pack)

Unifi Mesh Wifi package still wins but cheaper at only by 5%.

Buying Maid Protector Insurance with discount

I received maid protector renewal notice which last time I bought the policy during renewal of her passport.

Last time I bought two years maid insurance coverage at post office from RHB Insurance provider. I totally forgot the premium amount that I paid last time, but for this time renewal the coverage details as per below;

  1. Accidental death/ permanent disablement – RM20k
  2. Medical expenses – RM750
  3. Hospital and surgical expenses -RM3k
  4. Weekly hospital income benefits – RM110
  5. Repatriation benefits – RM3.5k
  6. Vicarious liability – RM2k
  7. Termination expenses – RM250

Maid Insurance Options Renewal

Since I received the letter I have two options of making renewal which are;

  1. by visiting RHB Insurance branches/RHBI agents
  2. or email direct to

Discount if Buy Direct with RHB

So I decided to only email RHB and to my surprise received their quick reply. Furthermore, if I purchase direct I can get discount of 25%. Instead of paying RM121.30 per year,  I only need to pay for RM93.48 per year coverage.

I just need to make payment online via Jompay and email all the necessary documentations such as maid passport, employer IC copy and payment receipt.

Now I just need for them to provide me with cover note or policy details.

That is all.

Note: Maid Protector is no longer issued by POS Malaysia.

Typescript – Builder Pattern and Inheritance

Using Typescript, I want to make a class of Builder of abstract class and follow a Builder Pattern and the child class will implement the details.

The parent abstract class:

export abstract class SQLQueryBuilder{

   // private tableName: string;
   private configs: ConfigsHelper;
   readonly TABLE_PREFIX_CONFIG_NAME: string = "tablePrefix";

    constructor(configs: HOption[]){
        this.configs = new ConfigsHelper(this._getCompulsoryFields());

    protected getConfig(name: string): string{
        return this.configs.get(name);

    protected _getCompulsoryFields(): string[]{
        return [this.TABLE_PREFIX_CONFIG_NAME];

    public abstract build(tableName: string): SQLQueryBuilder;

The child class:

export class KnexSQLQueryBuilder extends SQLQueryBuilder{

    private knex = null;
    private query: Knex.QueryBuilder = null;

    constructor(configs: HOption[]){

        const knexConfigs = {
            client: super.getConfig("client"),
            connection: {
              host : super.getConfig("host"),
              user : super.getConfig("user"),
              password : super.getConfig("password"),
              database : super.getConfig("database")

        this.knex = Knex(knexConfigs);

    public build(tableName: string): KnexSQLQueryBuilder{
        this.query = this.knex(tableName);
        return this;


If you notice, you need to change the return of build() function into child class name.

typescript builder pattern and inheritance - child class
typescript builder pattern and inheritance – child class

Selenium – This version of ChromeDriver only supports Chrome version 85 error on Ubuntu

I use Selenium web driver to scrap some website data that I need for my property analysis. In this case I use chromedriver.

When I want to run it after I upgraded my Chrome browser on Ubuntu I found this error.

This version of ChromeDriver only supports Chrome version 85 

My steps to resolve this

1) Check my Chrome browser version and found it is 87.

google browser version
google browser version

2) Check my chromedriver version by typing

chromedriver --v
ubuntu check chromedriver version
ubuntu check chromedriver version

I found my version is 85 not same as my browser.

3) Check the location of the chrome driver by typing

echo $PATH

In my case I found my chrome driver at /usr/local/sbin

chrome driver location on ubuntu
chrome driver location on ubuntu

4) Download the latest chromedriver at Google ChromeDriver Website

5) After extracting the latest chromedriver, replace the old one.

mv [latest chromedriver file] [location of current chromedriver]
ubuntu replace old chromedriver
ubuntu replace old chromedriver

Then when I run back my program, it works!