Featured

Documentations and Passport Renewal for Indonesian Maid

Required documents;

  1. Letter authorization – wakil isteri
  2. Marriage certificate
  3. Employer IC copy
  4. Copy of maid passport front and back
  5. Copy of maid work permit sticker
  6. Written info in A4 paper – full address (employer house add and Maid Indonesian house add)

Cost for 5 years passport renewal is RM109.00 as of March 2019. This cost inclusive of Biaya Paspor (RM92.00) and Jasa Ti Biometrik (RM17.00)

After submission (27/3/19) of completed document they will give you a slip with payment proof. They said normally will took around 3 days for new passport collection (stamp collection date which is in 1/4/19).

On the slip is also stated that we can sms to get update on the passport status before come for collection.

In my case it so troublesome – took me almost 3 weeks.

Type of Application: Perorangan Penggantian – Habis Berlaku

Payment from Nuffnang for My Advertisement Income

I put Nuffnang advertisement on my blog. I requested for pay out for my ads income.

I requested on 25th Nov 2020 and received the check on 16th January 2021. It took nearly 2 months to get the check.

Based on my experience with Nuffnang, its income not as good as before and better use Google AdSense. My blog rarely shows any Nuffnang advertisement maybe due to low traffic. Ha ha

nuffnang letter containing check
nuffnang letter containing check
nuffnang check from nuffnang
nuffnang check from nuffnang
nuffnang check received
nuffnang check received

Stream Movies from Ubuntu Shared Folder to Samsung Smart TV

Set Up Sharing Folder Service at Ubuntu

Install minidlna service

sudo apt-get install minidlna

Configure /etc/minidlna.conf (sets WHICH FOLDERS to use AND who is using the service)

edit /etc/minidlna.conf :

sudo vim  /etc/minidlna.conf 

Notes: for vim, press insert to edit the file, then press escape “:x” to save changes.

Configure the path & friendly name

media_dir=[path to folder you want to share]

friendly_name=wanrazaliUbuntu

minidlna conf - media path
minidlna conf – media path
minidlna conf - friendly name
minidlna conf – friendly name

Configure user:

USER=root
minidlna - conf - user root
minidlna – conf – user root

Save the changes

press Escape
followed by :x 

Configure /etc/default/minidlna (sets WHO the service runs as)

sudo vim /etc/default/minidlna

Configure user as root

USER="root"
minidlna - conf - user root
minidlna – conf – user root

Save the changes

press Escape
followed by :x 

Restart minidlna service

sudo service minidlna force-reload 

Access the Folder at Samsung Smart TV

Go to input source, you will see friendly name that has been set.

samsung smart tv - source view ubuntu nas
samsung smart tv – source view ubuntu nas
samsung smart tv - folders inside the ubuntu nas
samsung smart tv – folders inside the ubuntu nas

Video on Accessing the Ubuntu NAS

References:

http://mylinuxtechcorner.blogspot.com/2013/09/smart-tv-streaming-from-ubuntu-nas.html
Running minidlna on Ubuntu

Google Adsense Verify Billing Address

I have Google Adsense account to generate some income for my blogs. After reaching certain amount Google will show notification that needs to verify billing address.

Billing Address Verification Notification

google adsense - notification to verify billing address
google adsense – notification to verify billing address

According to Google, they have sent the verification address letter on 8th January 2021. I received it today which is 10th February 2021. It took nearly 4 weeks ++.

google adsense - verify billing address
google adsense – verify billing address

Billing Address Verification Letter

I was happy when I received the verification letter. I told myself if I don’t receive it by this week. I will ask Google to resend the letter.

google adsense - letter front
google adsense – letter front
google adsense - letter back
google adsense – letter back
google adsense - letter inside code
google adsense – letter inside code

Verify The Billing Address by Entering the Code

Click verify and key in the code inside the letter. Upon success, it will show success status and the verification billing address widget will disappear.

google adsense - click verify
google adsense – click verify
google adsense - fill up and submit
google adsense – fill up and submit

Godot 3.2.3 Grid Movement Part 2/2

I converted this Godot Grid Movement Video Tutorial into textual tutorial because I feel it is much easier to follow textual tutorial.

This is Part 2, you can view Part 1 here.

What You Will Learn From This Godot Grid Movement Tutorial

  1. How to create player sprite that move in 2D grid
  2. Create Collision walls where the player sprite cannot pass through the wall

Part 2 – Player Sprite Moves within Walls

Create Walls

i. Add child node -> Add TileMap.
ii. Set Tile Set from empty to new Tile Set.
iii. Double click on new Tile Set to change to Resource tab.
iv. Click “+” add texture (add bottom left)
v. Use the default Godot icon as the wall.
vi. Make the Icon editor window bigger by clicking on the up arrow (bottom right)
vii. Zoom in the tile set by clicking “+” at top right.
viii. Click “New Single Tile” and click grid icon to enable the grid.
ix. Select the icon if selected yellow line will appear.
x. Change color to black by clicking the “Modulate”
xi. Change RGB color to 000000

godot grid movement - create tilemap
godot grid movement – create tilemap
godot grid movement - set tile set to new tile set
godot grid movement – set tile set to new tile set
godot grid movement - double click on new tile set to set the resources
godot grid movement – double click on new tile set to set the resources
godot grid movement - add the resource
godot grid movement – add the resource
godot grid movement - use default godot icon
godot grid movement – use default godot icon
godot grid movement - click up arrow bottom rigth to make the icon editor bigger
godot grid movement – click up arrow bottom rigth to make the icon editor bigger
godot grid movement - zoom in the icon
godot grid movement – zoom in the icon
godot grid movement - click new single tile and enable the grid
godot grid movement – click new single tile and enable the grid
godot grid movement - grid enabled
godot grid movement – grid enabled
godot grid movement - change color by clicking on modulate
godot grid movement – change color by clicking on modulate
godot grid movement - change color to black where RGB 000000
godot grid movement – change color to black where RGB 000000

Add Collision to The Wall Tile Set

i. Ensure tile set is still selected (yellow outline)
ii.Click “Collision”
iii. Click the square icon
iv. The select the region within the yellow line.
v. Icon color will change to turquoise if collision is properly set.

godot grid movement - add collision square
godot grid movement – add collision square

Create The Maze

i. Click on player sprite (to go back to player scene)
ii. You will see the TileMap is black now.
iii. Check the TileMap is 64×64
iv. Click on TileMap and start populating the walls to create your own maze.

godot grid movement - wall is black
godot grid movement – wall is black
godot grid movement - ensure size is 64x64
godot grid movement – ensure size is 64×64
godot grid movement - create maze
godot grid movement – create maze

Add RayCast2D to Player Sprite

i. Right click on Player sprite -> Add child node
ii. Select RayCast2D
iii. Set the RayCast2D
– Position x = 32, y = 32 (to make centre (red plus sign))
– Enable is on
– Cast to y = 32 (to make the down blue arrow to just at the edge of the player sprite)

godot grid movement - create raycast2D
godot grid movement – create raycast2D
godot grid movement - set the raycast2D
godot grid movement – set the raycast2D

Update the Player Script

i. Click on the script icon near Player sprite
ii. Update the script based on the code below.
iii. Ensure script indentation is correct.

godot grid movement - open script
godot grid movement – open script
extends Sprite

var speed = 256
var tile_size = 64

var last_position = Vector2()
var target_position = Vector2()
var movedir = Vector2()

onready var ray = $RayCast2D

func _ready():
	position = position.snapped(Vector2(tile_size, tile_size))
	last_position = position
	target_position = position
	

func _process(delta):
	#MOVEMENT
	if ray.is_colliding():
		position = last_position
		target_position = last_position
	
	else:
		position += speed * movedir * delta
		
		if position.distance_to(last_position) >= tile_size - speed * delta:
			position = target_position
			
	
	#DELTA
	if position == target_position:
		get_movedir()
		last_position = position
		target_position += movedir*tile_size
		

func get_movedir():
	var LEFT = Input.is_action_pressed('ui_left')
	var RIGHT = Input.is_action_pressed('ui_right')
	var UP = Input.is_action_pressed('ui_up')
	var DOWN = Input.is_action_pressed('ui_down')
	
	movedir.x = -int(LEFT) + int(RIGHT)
	movedir.y = -int(UP) + int(DOWN)
	
	if movedir.x != 0 && movedir.y != 0:
		movedir = Vector2.ZERO
		
	if movedir != Vector2.ZERO:
		ray.cast_to = movedir * tile_size / 2

godot grid movemen t- update script with raycast2d p1
godot grid movemen t- update script with raycast2d p1
godot grid movemen t- update script with raycast2d p2
godot grid movemen t- update script with raycast2d p2

Run The Game

i. Click Play icon (top right)
ii. Now you can see the player sprite can’t pass through the walls.

Godot 3.2.3 Grid Movement Part 1/2

I converted this Godot Grid Movement Video Tutorial into textual tutorial because I feel it is much easier to follow textual tutorial.

What You Will Learn From This Godot Grid Movement Tutorial

  1. How to create player sprite that move in 2D grid
  2. Create Collision walls where the player sprite cannot pass through the wall

Part 1 – Make the Sprite Move

Create Node

i. Click “Other Node”
ii. Then select “Node”

godot grid movement - create node
godot grid movement – create node
godot grid movement - select node
godot grid movement – select node

Create Sprite

i. Right click “Node” -> Add child node
ii. Select Sprite
iii. Drag and drop icon.png into sprite texture at right panel
iv. At sprite panel, untick centered on
v. Click “Scene” (top menu left) then save scene as player.

godot grid movement - create sprite
godot grid movement – create sprite
godot gride movement - drag n drop icon to sprite texture
godot gride movement – drag n drop icon to sprite texture
godot grid movement - untick centered
godot grid movement – untick centered
godot grid movement - save scene as player
godot grid movement – save scene as player

Add Script to the Player sprite

i. Right click on Sprite -> Attach Script
ii. Click create on when the window open.
iii. Remove all codes except “extends Sprite”
iv. Copy the code below and paste to the script. Ensure indentation is correct.

godot grid movement - attach script
godot grid movement – attach script
godot grid movement - create script
godot grid movement – create script
godot grid movement - remove all codes except extends Sprite
godot grid movement – remove all codes except extends Sprite
extends Sprite


var speed = 256
var tile_size = 64

var last_position = Vector2()
var target_position = Vector2()
var movedir = Vector2()

func _ready():
	position = position.snapped(Vector2(tile_size, tile_size))
	last_position = position
	target_position = position
	

func _process(delta):
	#MOVEMENT
	position += speed * movedir * delta
	
	if position.distance_to(last_position) >= tile_size - speed * delta:
		position = target_position
		
	
	#DELTA
	if position == target_position:
		get_movedir()
		last_position = position
		target_position += movedir*tile_size
		

func get_movedir():
	var LEFT = Input.is_action_pressed('ui_left')
	var RIGHT = Input.is_action_pressed('ui_right')
	var UP = Input.is_action_pressed('ui_up')
	var DOWN = Input.is_action_pressed('ui_down')
	
	movedir.x = -int(LEFT) + int(RIGHT)
	movedir.y = -int(UP) + int(DOWN)
	
	if movedir.x != 0 && movedir.y != 0:
		movedir = Vector2.ZERO
		

godot grid movement - script part 1
godot grid movement – script part 1
godot grid movement - script part 2
godot grid movement – script part 2

Run the Scene

i. Click “Play” (top right) or F5 to run the scene.
ii. Move your arrow left, right, up and down to move the player sprite.

Part 2 Godot Grid Movement Tutorial – Make The Collision Wall and Combined with Player Sprite

Unifi Mesh Wifi M4 TP Link Set Up

I took the Unifi Mesh Wifi package of RM15 per month for 24 months. It was quite easy to set up just need to install mobile application Deco then follow its step by step instruction.

You can refer this document by TP Link to understand how to set it up.

I only include part not covers by the document which is the button to add new Wifi network. You just need to click on the “+” on right top.

TP Link Mesh Wifi Deco App - add new mesh
TP Link Mesh Wifi Deco App – add new mesh

Then you can follow the step by step instruction.

Below is example of pulsing blue.

 

Resipi Ayam atau Mutton Stuffing for Taco, Wraps or Burritos

 

Tortillas Wrap
Tortillas Wrap

Bahan – Bahan:

  1.  Bawang besar (potong dadu)
  2. Bawang putih (mayang halus)
  3. cili blend / cili boh
  4. rempah kari + serbuk cili + air (mix)
  5. jintan putih
  6. Serbuk ketumbar
  7. parsley herb
  8. white pepper + salt
  9. perasa: sos tomato, sos cili, kicap and tiram.
  10. Minced mutton atau ayam cincang.

 

Herbs - parsley, cumin, coriander
Herbs – parsley, cumin, coriander

Tumis macam biasa bahan-bahan di atas mengikut turutan nombor dimana akhir sekali adalah meletakkan ayam atau mutton minced sehingga bahan utama protein tersebut masak secukupnya.

Side filling / toppings

Preparation for Taco fillings
Preparation for Taco fillings
  1. capsicum
  2. japanese cucumber
  3. carrot
  4. shredded cheese
  5. lettuce
  6. rocket leaf
  7. Baby tomato
  8. Thousand island sauce
  9. Honey Mustard

(you can choose to slice match size or any size you prefer)

preheat Taco shells in oven
preheat Taco shells in oven
Baked shredded cheese till melt before putting veggies
Baked shredded cheese till melt before putting veggies

you can choose any type of – WRAPS/ BURRITO / TORTILLAS / CORN WRAPS (TACO) mengikut selera. Since my youngest son been dreaming eating TACO… so i made few options because my 2nd son prefer to eat Burritos.

 

 

Readymade Taco Shells
Readymade Taco Shells

Lain orang lain kesukaan tetapi yang penting you can just made one time cook for the same fillings.

Chicken and Mutton Burritos
Chicken and Mutton Burritos

 

buritos kambing
buritos kambing

Apple Macbook Pro M1 chip Fail to Play My iPhone Games Doorman Story

I bought an Apple Macbook Pro M1 in 2nd week of December, 202o. I was excited because know it can play iPad or iPhone games thanks to M1 chip which is similar like iPhone and iPad ARM chip.

At first after downloading my favorite game Doorman Story, I could play it.

apple macbook pro M1 downloaded iphone game
apple macbook pro M1 downloaded iphone game
apple macbook pro M1 - crash while playing iphone game
apple macbook pro M1 – crash while playing iphone game

When I wanted to play second time, it produced error as shown in the image. Second time here means, I switched off my Macbook Pro then on it again.

apple macbook pro M1 error in playing iphone games
apple macbook pro M1 error in playing iphone games

It is really frustrating as the game won’t load even after few on and off the MacBook. Even after re-installing it doesn’t work.  I haven’t try other iPad or iPhone app though.

Install Signal Messaging Desktop on Ubuntu

Every knows that WhatsApp changes its End Users License Agreement (EULA) . Lots of people are worried about data privacy.

That is why I’m migrating to Signal Messaging. I installed Signal Desktop on Ubuntu but I faced small hiccup which I shared how to solve it.

Download Signal for desktop

Download it here: https://signal.org/en/download/#

and follow the given  instructions.

Can get the signing key from the error messageInstall Signal official public software signing key

wget -O- https://updates.signal.org/desktop/apt/keys.asc |\
  sudo apt-key add -
signal desktop install ubuntu - signing key
signal desktop install ubuntu – signing key

Add Signal repository to your list of repositories

echo "deb [arch=amd64] https://updates.signal.org/desktop/apt xenial main" |\
  sudo tee -a /etc/apt/sources.list.d/signal-xenial.list

Update Ubuntu package database and install signal

sudo apt update && sudo apt install signal-desktop
signal desktop installation ubuntu - error during installation
signal desktop installation ubuntu – error during installation

If Installation error like me, add the signing key

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys [signing key]

//example
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32

Can get the signing key from the error message

signal desktop install on ubuntu getting the signing key
signal desktop install on ubuntu getting the signing key

Then run the command

signal desktop installation ubuntu - add key
signal desktop installation ubuntu – add key

Reinstall again after adding the signing key

signal desktop installation ubuntu successful
signal desktop installation ubuntu successful

 

Reference:

Fix apt-get update “the following signatures couldn’t be verified because the public key is not available”

Register Seda Save 2.0 Program via Shopee Mobile Application

SEDA under Save 2.0 Program is giving away RM200 voucher to buy 5 star energy rated aircond and fridge. You can use the voucher via Shopee.

Search Seda Save 2.0 by Typing Save in Shopee App

seda save 2.0 search at shopee app
seda save 2.0 search at shopee app

Fill in the Required Information

Click on Daftar Sekarang

Click on Daftar Sekarang

 

Click on Daftar Sekarang

seda save 2.0 voucher rm200 for fridge and aircond 5 stars energy
seda save 2.0 voucher rm200 for fridge and aircond 5 stars energy

Fill in the Required Information

 

Fill in the Required Information

shopee seda save 2.0 registration form
shopee seda save 2.0 registration form

Even if you check YES, ensure you fill in the relation of Account Holder. If not the Submission Button is not activated

shopee seda save 2.0 fill in the reason to submit
shopee seda save 2.0 fill in the reason to submit

If Everything OK, you will see the Complete Registration Page

seda save 2.0 shopee program save 2.0 submission
seda save 2.0 shopee program save 2.0 submission