I am Victor Leung

Technical Lead at HSBC,MBA at CUHK,Freelance Web Developer

Name: Victor Leung

Profile: Full Stack Developer

Email: victorleungtw@gmail.com

Phone: (+852) 6629-4626


CSS 50%
HTML 85%
Python 75%
About me

8+ years of experience in software development, consulting services and technical product management.

Understanding of business and technology with an MBA in Finance and a Master degree in Computer Science.

Certified Scrum Master with experience in building products from scratch and serving as a charismatic leader.


Technology that enables and improves your customer experience is not only mission-critical but represents a direct link to the purpose and outward-facing profile of the corporation. As such key technology decisions must closely align to corporate strategy, regional objectives and fit with local market requirements. Engagement between the business and technology leadership is critical to the development of a successful plan leading to the realization of value through our following services.

Data Science

With Facebook page and Skype chatbot, I help you develop new strategies, business & operating models that are fit for purpose in a digital world, to understand and drive value from the enterprise.

IT Consultancy

With agile, Scrum framework, we support you to being agile, adopting Prod Mgmt. mindset, evolving the delivery model, & rethinking the talent model will be critical win & lead in the digital age.

Digital Transformation

DevOps, Continous Integration and Robotic Automation. I align, enhance and automate enterprise operations to optimize control, performance, efficiency, and proficiency.

Website development

Frontend development with AngularJS, EmberJs, MeterorJS, and ReactJS, I create, design, and activate rapid development of products & services to quickly realize business value, enabled by disruptive technologies and platforms.

Mobile development

Build and compile iOS with Swift and Android with Kotlin, I help you establish an innovative product and establish end-to-end innovation capabilities to incubate ideas and business models with the customer at heart.

Stress Test

Using Apache JMeter, I help you identifying new risks, designing and delivering a control model to meet regulations and building trust with your customers, regulators, shareholders, and employees.










Here are some projects that I worked on:

Merchant Online Payment

Web App / 2019

Cancer Fund

Wordpress / 2019

Loop Sports Tech

Koa / 2019

Payme for Business

Mobile Android / 2018

Cathay Pacific

Mobile / 2017


iOS app / 2016


Web / 2016

League of Legend

Web / 2015

Robo Advisor

Web App / 2019

AI Solution

Artificial Intelligence / 2019

HKID Validator

Mobile Android / 2018

Recycle Bin Nearby

Web / 2018

Food Label Analyzer

Artificial Intelligence / 2018

Sushi Classifier

Machine Learning / 2018

Alpha Algo

Machine Learning / 2016

Career Match

Mobile iOS / 2009


Learn by doing, Continuous improvement


Writing unit test cases with Karma for angular component

I would like to convince you to start writing unit test cases for your angular web app. Shorten time to production is not an excuse to accumulate technical debts. There are many good reasons why you should start writing it: It helps you identify


Setup Django server with Apache virtual host and Python virtual environment

It took me a while to get everything works together, so I would like to document some of the steps and save you some time in the future. First of all, assuming that you already have your CentOS / Ubuntu instance running and python already

App Developer

Stop downloading app for anything and everything

Apps are irrelevant. Most of the tasks you perform in a native mobile app can be performed in a browser web app as well. We don’t need to download your stupid app because the browser is well suited as a replacement. One thing


Install Ubuntu 20.04 LTS on MacBookPro14,1

Ubuntu 20.04 just released and I can’t wait to try it out and install on my MacBook Pro 14.1 model. I am going to tell you what works and what doesn’t work, as well as any workaround to fix those


Handle user close browser event with JavaScript

For some scenarios, you don’t want the user to close the browser and exit the journey. For example, if a user is filling in a form without saving or in the middle of payment transaction without complete, then you could prompt the


Import npm modules to AWS lambda function

When you create a node.js lambda function on Amazon Web Service (AWS), and start editing using the online editor, then you want to npm install and import a third party library, such as lodash, unfortunately there is no simple way to do it


Fix Wordpress plugin installation permission issue

Problem: When I try to install a plugin at WordPress, I hit an error: Installation failed: Download failed. Destination directory for file streaming does not exist or is not writable. This is due to some permission problem when the content folder. I was editing


Fix Wordpress with all pages returning 404 not found

Problem: I encounter a weird problem in WordPress, where the homepage is able to load properly, but all the pages are failing to load. An error page display: Not Found The requested URL was not found on this server. However, since the files were


Fix endless redirection with https setting at Wordpress and using AWS load balancer

Problem: I set up a WordPress blog at 2 Amazon Web Service (AWS) EC2 instances at different availability zone. In front of them, a elastic load balancer (ELB) is set up, which redirect all HTTP port 80 requests to HTTPS port 443. Since the


Install php7.2 instead of php5.4 on Amazon Linux 2

Problem: When you start a new Amazon Linux 2 AMI server, and try to install php via command: yum install php After install successfully and check the version, you would see php -v PHP 5.4.16 (cli) (built: Oct 31 2019 18:34:

Data Science

Reading large file using Node.js

I got a task to analyse a massive dataset of log files. When you open the file in Excel, it would simply freeze your laptop. Given the limitation of tools available, I try to parse the file using node.js script. Problem: To read


Migrate Wordpress MySQL to AWS RDS

In this article, I am going to explain how to migrate your WordPress local MySQL database to Amazon Web Service (AWS) Relational Database Service (RDS). Why would you want to do this? Because of the following benefits: It increases the performance since your database


Remove .DS_Store files in git

If you are a mac user and using git, you may accidentally commit a file with .DS_Store. Your windows colleague would be confused what does this files do and why do you commit it. First of all, what is .DS_Store file? DS


Remove .DS_Store files in git

If you are a mac user and using git, you may accidentally commit a file with .DS_Store. Your windows colleague would be confused what does this files do and why do you commit it. First of all, what is .DS_Store file? DS


Git ignore already modified files

I encounter a rare scenario that there is a file modified, but I don’t want to commit this change on git. There are many ways to do such as .gitignore file, but it doesn’t work when the file already tracks.


Find and kill process locking specific port on Mac

Problem: Sometimes when you start a local node.js server, it may be stuck running at the background. When you try to start the server again, you will hit error saying that the port (for example 8080) is already is in used and locked:


How to work with Product Manager as a Software Engineer

I know that feel bro, cuz I’m also a software engineer. With years of experience, I have met some great Product Managers (PM) and a couple of bad ones. It is difficult to work closely with a bad PM every day, a bad

Adobe Experience Manager

Register Sling Servet in Adobe Experience Manager

In Adobe Experience Manager (AEM), a Sling servlet can be used for handling some RESTful request-responses ajax call. It is written in Java programming language and it can be registered as OSGi (Open Services Gateway Initiative) services. In order to trigger the script, there


Install Nextcloud on AWS EC2 and using S3 storage

I want more privacy, so I decided to minimize the use of Google products. I can replace Chrome with Firefox, replace Gmail with ProtonMail and replace Google Drive with Nextcloud. Nextcloud allows me to self-host of cloud storage and gives me control over my


Debug php code on browser

In javascript, you can console.log(‘whatever”) in your browser for troubleshooting. However, in php code, a little bit trick is required to do so. Here are the steps: function debug_to_console($data) { $output = $data; if (is_array($output)) $output = implode(',',


Install Ubuntu 19.10 on Macbook Pro 13,1

I was frustrated by the macOS Catalina, so I decided to switch to Ubuntu as the main operating system on my MacBook Pro, 13-inch version without touch bar. As a software developer, the macOS bundled a lot of tools with the Xcode which takes


Setup MongoDB with Koa.js

I’m building a Koa.js server and need to connect to MongoDB to store and retrieve data. Here is how to do it with some simple steps: Step 1: Connect the database before Koa app initialised const initDB = require('./database'); initDB(); const


Migrate blog from medium to ghost 3.0

Ghost 3.0 just released. (https://ghost.org/3/) I hate WordPress with PHP but love Ghost with Node.js. It is open source and the dark theme is pretty cool. So I decided to switch my blog from the medium platform. However, there


Setup npm proxy in a corporate network

It’s painful to work behind a corporate network and everything does not work out of the box. Simple command like npm install would not work and here is how to work through the proxy: Assuming you somehow get nodejs installed in your corporate


My MBA study trip to Germany

The key personal learning from the Germany trip is anti-fragile. Travelling involves many uncertainty and randomness. Despite my flight was delayed in Helsinki at Finland and I was suffering from the stressful presentation with jet lag, the journey is worth it as I learned

Digital Transformation

Case study: Li & Fung family business

In this article, I would discuss the lesson we can learn from this Li & Fung’s family. The insights we can get from this family to last over one thousand years is the culture to reinvent itself in order to survive. There are


MiFID II — What are the impact and opportunities for investors?

MiFID II is designed to bring greater transparency and investor protection to the financial markets. It introduces more protection for all investor types from retail to professional and extends the types of financial instruments in scope. Impact beyond Europe Markets directly impacted include France,

Data Analysis

Getting real-time data from Web to Excel

An undergraduate student asked me how to get real-time data from a website into an excel. The data is used for his homework assignment, but many financial data are not free of charge. Therefore I gave him a simple solution, which I am going

Aws Ec2

Enable HTTPS on AWS EC2 instance with Node.js and Nginx on Ubuntu server

I have an AWS EC2 instance running with NodeJS and Nginx on a Ubuntu 16.04 server. I am going to show you how to enable HTTPS instead of HTTP for your website using Let’s Encrpyt. HTTPS helps prevent intruders from tempering communication


Replace text in xml files with Powershell

Powershell Script Yesterday I was working at client site. It is a Windows server isolated from external network. It is not allowed to install any third party software in the machine. However, I got a task in hand to replace all xml files name

Batch Script

Replace text in a file using Batch script

Yesterday I was working at client site. It is a Windows server isolated from external internet access and prohibited to install any new software. I got a task in hand to remove all yaml files id to null. For example, the input file temp.


A look into Chile’s startup ecosystem

In retrospective, my Chile trip was amazing. Despite it was tough to fly over 30 hours from Hong Kong and suffering from jet lag, the journey is totally worth it and I learnt a lot beyond classroom. The tour was full of insightful and


Upgrade AppMon from version 6.5 to 7.1

I am working on upgrade for Dynatrace AppMon from version 6.5 to 7.1. AppMon is a tool for gathering performance data, trusted by many clients and it helps developers to troubleshoot for issues in the application. This version upgrade includes new features


AWS Cognito User Pools with mobile sdk for iOS using custom challenge

I was integrating AWS Cognito user pool to an iOS application. The sign in feature is using custom challenge for authentication, but there is a lack of documentation about how to use the iOS sdk. After many trial and errors, I have finally able


Managing your boss

Managing your boss means consciously working with higher level manager to obtain the best possible results for you in the traditional top-down organization. Effective managers not only take time and effort to manage subordinates, but also their bosses. An inability to manage upwards is


Leadership that gets results

Research found that six distinct leadership styles have a direct impact on the working atmosphere and financial results in terms of revenue growth and profitability. The six leadership styles include coercive, authoritative, affiliative, democratic, pacesetting and coaching. More importantly, it indicates that leaders with


Debug iOS traffic on iPhone device

I’m doing production support for an iOS mobile app. The pain point is hard to debug HTTPS traffic between the iPhone and our server. In this article, I will explain how to capture the requests, response and the HTTP headers. Step 1: Download


How to motivate your problem people

In order to get people to follow your lead, the only way to succeed is by getting the people to motivate themselves. The common mistakes managers make on their attempts to motivate problem people is by using the sales pitch to push solution, hoping


Learning Charisma — Transform yourself into the person others want to follow

Charisma can be learned. We can practice to acquire the ability to inspire followers towards a clear vision and instill deep levels of trust. We can earn the charismatic skills by effort even though we were not born and naturally gifted. We can be


Evidence based management

Life is a series of decisions. From day to day business operations to critical decision for the future directions of a firm, managers are always demanded to make many decisions. It becomes more and more important for managers to know how to make good


Evidence-based management

Life is a series of decisions. From day to day business operations to critical decision for the future directions of a firm, managers are always demanded to make many decisions. It becomes more and more important for managers to know how to make good


The challenge of Nexus, Scaled Professional Scrum (SPS)

I am in a project running with scaled scrum using Nexus framework. Nexus means a relationship or connection between people, which is a unit of development in scaled scrum. Software development is complex, and it’s more challenging with multiple teams build on the


Internet Border Gateway Protocol (BGP)

This article is about the Internet Border Gateway Protocol (BGP). It is a standardised exterior gateway protocol to exchange routing and reachability information among different autonomous agents (ASes) or Internet Service Providers (ISPs) on the Internet. The importance of the protocol, its capabilities, its


Pseudo-scrum – a hybrid of waterfall and agile

Let me tell you the truth: you’re not agile. You claimed to be a scrum team, you did all the ceremonies: standup, demo and retrospective, you got all the tools: JIRA, user stories and scrum board. But still, there is something fundamentally missing


Deploy Koa.js Application to AWS EC2 ubuntu instance

I am developing a Koa application, which is a new web framework designed by the team behind Express. Here is a step-by-step tutorial on how to deploy the koa.js application on your Amazon Web Service (AWS) ubuntu server. Firstly, launch the ubuntu instance


Things I learned from IoT project

It was challenging to work on an Internet of Thing (IoT) project for a bluetooth smart device in the last year, which is different from pure software development in a couple aspects: Firstly, integration is difficult, because the mechanical, firmware, mobile app and design


Fix iOS 10 permission crashes error

I am developing an app with request access to user’s microphone. It was working fine with iOS 9, but since upgrade to iOS 10, it terminates with error message shown in the terminal: This app has crashed because it attempted to access privacy-sensitive


What is Blockchain and how is it used?

A lot of friends ask me questions about the emerging of Blockchain revolution. According to the recent news, four of the world’s biggest banks have teamed up to develop a new form of digital cash that will become an industry standard to clear

Data Science

Install Jupyter Notebook in Mac OS X

I’m using Anaconda way to install the jupyter notebook. Firstly go to the website: https://www.continuum.io/downloads After download and install using the Graphical installer, if you try to run: jupyter notebook You will probably get an error: zsh: command not


Launching RancherOS on AWS EC2

RancherOS is a linux distro for running Docker container. There is an AMI (Amazon Machine Images) in the marketplace, but it took me a while to figure out how to setup the security group etc. Here is the missing manual: Assume you already have


Deploy Java Spring server with Docker container

I am deploying a Java Spring server using Docker. Here are the steps: 1. Launch a ubuntu server In this demo, assume you have a server launched with ubuntu 14.04. Install docker via APT repository: $ sudo apt-get update $ sudo apt-get install apt-transport-https ca-certificates


Apple Push Notification with Java Spring Framework

I am implementing a Java Spring Framework server which sends an Apple Push Notification to an iPhone using Swift. Here are the things you will need: 1. Account setup Assume you already have an Apple developer account with certificates, login https://developer.apple.com/

Game Development

Submit Unity 3D Game to Mac App Store

After 3 months of development on the weekends, our unity 3D game is ready to release and deploy to App Store. However, it was not straight forward at all, and I spent a whole night to figure it out. So I decided to document


Resolve merge conflict for Unity Game Engine

I’m working in a group of 4 teammates for a unity 3D game project on the weekends. It’s pretty fun, but we have encounter problems with version control. Using Git and Github, there are many merge conflicts that it’s not easy


Trivial facts about Javascript date

Fact 1: Integer value representing the month, beginning with 0 for January to 11 for December. For example, Today is var date = new Date(2016, 3, 29, 11, 10, 30) instead of var date = new Date(2016, 4, 29, 11, 10, 30) Fact 2:


It’s not a tech problem, stupid

I love helping people and solving complex problems, but it’s frustrating to see issues that is beyond the scope of a programmer to fix. If you have no engineering background, then you may think you have a tech problem: a website, an app


What I learned from building large-scale application for overseas clients

The I.T. industry in China is a rapidly growing market. Over the last 1 year in Hong Kong, I’ve been lucky enough to work on an exciting project. I’ve also had the chance to learn something that’s never encountered before,


What I learned from building a large-scale application for overseas clients

The I.T. industry in China is a rapidly growing market. Over the last 1 year in Hong Kong, I’ve been lucky enough to work on an exciting project. I’ve also had the chance to learn something that’s never encountered before,


How to use Webpack with React and Bootstrap

I was setting up a project today using Webpack, React and Bootstrap without jQuery. This supposed to be a straight forward task , but turns out I have spent a bit of time to figure it out. So I’m going to document the steps


How to be a good consultant?

I’m a Software Engineer with leading Australian technology company. I’m smart, skilful, hard working… but these are not enough to be a good consultant. Luckily, after listening from an experienced coach, I got some really insightful ideas. Here is the lesson I

Understanding Optional and Exclamation Mark in Swift

Swift is very strongly typed. All variables have a type. There is a type in Swift called optional. Optional can have only two values: One value is not set, such as never been set or someone has set it to be not set state,


Connection between .h and .m files in Objective-C

When first open an objective-C project in X-code, the .h and .m files looks confusing. It is important to understand the simple connections and the hidden codes behind the scene. They are used to separate between the public and private parts of the class.

Install Hadoop on AWS Ubuntu Instance

15 October 2015 Step 1: Create an Ubuntu 14.04 LTS instance on AWS Step 2: Connect to the instance chmod 400 yourKey.pem ssh-i yourKey.pem ubuntu@your_instance_ip Step 3: Install Java sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo

Install MongoDB on Mac OS X

Firstly, install homebrew, which is the missing package management tool for OS X: ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” Then, update Formulae: brew update And install the mongodb: brew install mongodb To have launchd start mongodb at


Enable Automatic Login for OS X El Capitan

The Problem I just did a fresh install of OS X El Capitan. However, I tried enabling automatic login, but it stays locked. It was frustrating. The Solution Go to System Preferences, select Security & Privacy to turn off FileVault for the disk. Go


What To Expect From Coding Bootcamps

24 August 2015 Thinking of joining a coding bootcamp? Join us as our speakers share their bootcamp experiences at Hack Reactor and GA’s Web Development Immersive. You’ll hear from our panel about: — What to expect at a coding bootcamp — Positive and Negative


Ember Inject Controller

The problem I got: Just updated the Ember project to v1.13.5, and received this warning in brower console: DEPRECATION: Controller#needs is deprecated, please use Ember.inject.controller() instead However, I couldn’t find the documentation yet on how to write the



My goal is to travel around the world! Yep, this is a bit too ambitious. One important principle I learnt from software engineering is how to manage complexity. By breaking down the big problem into smaller, manageable pieces, we could achieve something amazing step

Batch Crop Images using ImageMagick

One of the tasks I perform today is batch cropping a lot of pictures. I have found ImageMagick very useful to scales and crop the images. Mogrify is a command of the ImageMagick package and allows us to perform many operations on multiple images.

Switching from Sublime Text to Atom

28 June 2015 Atom text editor just released 1.0 version. There are lots of reasons to switch from Sublime text. Maybe you love the idea of open source, or perheps you’re a member of Github community. There’s no doubt that Atom

How To Upgrade Ghost Blog With Command Line

Step 1: Change directory into your path that installed the ghost blog. For example, mine is: cd /var/www Step 2: Download the latest verion using wget wget https://ghost.org/zip/ghost-X.X.X.zip Note: You could find the current verion in

SSH: Fix Unprotected Private Key Error

The problem When I download the .pem file to ssh my AWS instance, I encountered the following error: WARNING: UNPROTECTED PRIVATE KEY FILE! Permissions 0640 for ‘blog.pem’ are too open. It is required that your private key files are NOT accessible by others.

Fix Ruby Gems Permission Error

The Problem When install gem in Mac OS X Yosemite, I got the following error: ERROR: While executing gem … (Gem::FilePermissionError) You don’t have write permissions for the /Library/Ruby/Gems/2.0.0 directory. The Solution Step 1: Install Rbenv brew install



Aluum-dabbda! This is how to say “beautiful” in Korean. Same phrase could be used to describe the gorgeous environment in Busan, Gyeongju and Jinhae, especially in spring, one of the best times of the year to visit with the Cherry blossom. I

Java: Variables are Always Passed by Copy

I am learning Java. One of the important concepts to understand is whether arguments of a function is passing by copy or reference. Passing by copy means when a variable is passed to a function, a copy is made. Passing by reference means when

3 Reasons to love React

Recorded at the Hong Kong JavaScript and Node.js meetup on 3 Mar 2015: Today, I’m going to talk about React. React is a JavaScript library for creating user interfaces. I have been using it for a couple projects. The more I use

Common npm permission issue

The problem: If you are using mac and install nodejs via pkg file downloaded from the official website, you are likely to encounter this error message when you try to install a npm module globally: npm ERR! Please try running this command again as

Sublime Text 3: OS X Command Line

The problem Sublime Text 3 includes a command line tool, subl. However, it does not work out of the box after you install the editor in OS X Yosemite. My solution After the installation, create a symbolic link to Sublime Text using this command:

12 Things You Need To Know About ECMAScript 6

ECMAScript 6 is the next version of the JavaScript standard. Here are the 12 cool things you need to know about ES6: 1. Arrow functions Similar to CoffeeScript, you can define a function using fat arrow syntax. var square = (n) => n * n; 2.

My Review of Hack Reactor Remote Beta

I took the Hack Reactor remote beta at the second cohort in Hong Kong to improve my technical skills in JavaScript. It was well structured, with a lot of excellent lectures and hands-on experience in cutting-edge technologies. I started by learning recursion, closure and

Beer Recommendation Engine using PredictionIO

The Problem: We all love beers. And today, we face an unprecedented variety of options. We are overwhelmed by too many choices and couldn’t decide: What should I drink next? My Solution: In our Hack Reactor thesis project, I build a machine learning

AngularUI: Mouseover event for Google maps markers

The problem: It took me awhile to figure this out, so I think it probably deserves a blog post to explain the issue. I was a bit confused on how to hookup the mouseover events with google map markers, and the AngularUI documentation is

Hacking New Year’s Resolutions 2015

The problem: 92% of New Year’s resolutions fail. Why? This sounds like an fascinating problem waiting to be solved. I have a hacker mind-set and like to apply this attitute to other things. I would be delighted if I could overcome this failure

Angular.js factory: Handle $http asynchronously

The problem: When I was using $http service to get data from a remote API, my code below was not able to return data back to the controller. myApp.factory('myFactory', function($http){ var data = { anArray:[] }; $http.get('/api').success(function(data) { data.

Setup proxy server with Express

The problem: I am working on a project using BreweryDB. I was trying to load some data from the API, but they don’t support jsonp. There is a CORS issue if I directly fetch data using Angular: XMLHttpRequest cannot load https://api.brewerydb.

Angular UI bootstrap: Open first accordion with ng-repeat

The problem: I was using accordion directive in Angular UI Bootstrap 0.1.2. Reading the demo page, there is an example to show how to open the first-accordion-group by default: <accordion-group heading="First Header" is-open="true"> </accordion-group> This works

Note on Ionic framework: Android platform in OS X

In this blog post, we are going to walk through a couple error messages to install dependencies for Android platform of Ionic framework using Mac OS X. Follow this official guide to install cordova and ionic, then create project until the step to config

Configure CircleCI with Karma test

The Problem I was setting up continuous integration using CircleCI with karma test for Angular on Heroku. The test was working on local host, but karam was not found on CircleCI: Uh-oh, some tests have failed! Failing command: npm test Exit code: 1 Output:

How to upload files with Meteor.js?

NOTE: This tutorial is using Meteor 1.1.3 with cfs:standard-pacage 0.0.2 (15th December, 2014). Since this feature is under active development, it maybe further changed by the time you read this. Feel free to contact me if you have any

Q&A with General Assembly Hong Kong

I was invited by General Assembly (GA) Hong Kong to talk about my experience in the Web Development Immersive (WDI) course. 1. Introduce yourself and describe what you’re currently working on. How did you get the idea for it? What is it about?

Does Hack Reactor makes you smarter?

I wake up at 12:00 am every morning. What wakes me up is not just the alerm clock, but also my goal to be a software engineer. I am a remote student at Hack Reactor in Hong Kong with local time 16 hours

Testing with Mocha: Array Comparison

The problem I was writing a mocha test for an array comparison. Here is the test suite: describe(‘Array comparison’, function () { ‘use strict’; it(‘should return true if two arrays have the same values’, function () { var myArray = [ ‘a’, ‘b’, ‘c’ ]; expect(myArray).to.equal(

How to customize Sublime Text default Auto-complete

I use Sublime text 3 everyday, especially the JavaScript autocomplete feature. For the if-statement, the default completion popup has an unnecessary semicolon at the end. if (true) {}; Using JSHint, it gives me an error for most of the code I written. It is counterproductive

Build awesome chat app in 5 mins with Meteor

In this tutorial, I am going to show you how to write a simple chat application using MeteorJS. Here is a live demo as our goal: http://hrr2demo.meteor.com/ And the source code on Github: https://github.com/victorleungtw/hrr2demo Feel free to

墨爾本篇- 六個意想不到的笑點

悉尼或墨爾本?朋友總是愛比較這兩個城市。我一直認為各花入各眼,而當我終於來到墨爾本時,發現它就是我情人眼裏的西施。 相片鳴謝: 雪兒 故事在七月開始,那是一個風雨交加的週末,但不論任何天氣,都不能阻止我探望好朋友的決心。正如我大部分的行程,出發前都沒有太多的計劃: 一切隨緣,恣心所欲。 您通常可以透過一個地方的綽號去了解它的特色: 墨爾本被譽為世界上最適宜居住的城市。這篇文章沒有特定的時間順序,只是挑選了其中幾個亮點介紹。如果你對這個地方一無所知,以下是我在旅途中發現的有趣事情: 下面是我在墨爾本發現的六個滑稽事情 01 | 冬天是寒冷的 這是常識吧!但墨爾本的冬季感覺是不一樣的冷。 兩個小時前,我還在布里斯班享受著溫暖陽光; 兩個小時後,我卻在墨爾本冷得不停發抖。雖然人們總説任何時間也是到訪這個城市​​的好時間,但不要太天真,以為當地永遠都是舒適的天氣。這是有史以來最糟糕的感覺:我在午夜被低溫冷醒了,還不止一次!但幸好我的朋友早有準備,特意買了一個小小的暖爐,這才救了我一命。與此同時,行程中最美好的時刻是在晚上享用冰淇淋,即使在街上邊走邊吃,冰淇淋都不會融化。

香港篇 - 六件令我又愛又恨的大小事

這是複雜的感情狀態:我愛你,因為你是迷人的,是天生麗質的;與此同時,恨是一種強烈的字眼,但有時我真的真的很討厭你。 23年前,我在香港出生,成為700萬人口中平凡的一份子,共處於只有1104平方公里的城市。我們深深相愛,但有時候卻在痛苦掙扎,讓我慢慢為你解釋為什麼會跟這個地方愛恨交纏: 令人又愛又恨的香港 01 | 愛:港人 先說好的方面:顯而易見,遊客總是著迷於這個多元化的環境。香港是一個移民城市,具有各式各樣的世界文化。外國人來到這裡一定會愛上我,當然還有我的家人和朋友。因為我們幽默風趣,善解人意,又樂於助人。我們努力工作,雖然工作時間是世界最長的,但工作效率也是世界一流的。相反地當我身在其他國家,就會感受到外國人緩慢的工作節奏,實在慢得讓我發瘋! 02 | 討厭:太擁擠 這是可悲的,但卻是事實:你搶購不到門票,你不能逼上火車,你無法在餐廳找到一個位置,而排隊的長龍也無處不在。你在想,

悉尼篇 - 六項極速體驗的旅遊攻略

你只有短短幾天假期在悉尼旅遊?別擔心,跟隨我的嚴選攻略,你可以在三天之內玩盡悉尼之精髓,領略活力城市之魅力所在,締造醉人難忘之度假體驗。 我選擇了在悉尼度過復活節長假期。當我在TripAdvisor網上尋找資料的時候,發現竟有855個建議活動!試想像一下你正身處悉尼,包圍你的盡是大家趨之若鶩的旅遊景點,五光十色的豪華名店和喧鬧匆忙的內地遊客。這樣的環境肯定使你神經緊張,特別是當你發現景點太多,但沒有足夠時間一一遊覽。現在就馬上跟我出發!讓我帶你在三天內完成行程,而不錯過任何重要的景點。 時間太少但景點太多時的六個旅遊攻略 01 | 由歌劇院開展美好行程 無圖無真相,為了證明給朋友看你已經處身悉尼,上傳一張與悉尼歌劇院近距離自拍照,實必不可少,當然還有聞名遐邇的海港大橋。你可以攀登橋上,俯瞰壯麗風光,一覽眾山小,但非一般的體驗也價格不菲 。我寧願節省一點錢,乘渡輪在橋底駛過,這也可以是一生人一次的經驗,沿岸景色之美非筆墨所能形容! 02 | 在岩石區散步 毗鄰歌劇院的岩石區,可品嘗享負盛名的美味煎餅。你也可以去Glebe魚市場,吃最有特色的炸魚薯條。如果你有幸適逢週末來探訪,會發現岩石區的市場擺滿了琳琅滿目的攤位,售賣工藝精湛的小玩意,亦有動人的街頭表演

布里斯班篇 - 六個你非去不可的原因

到布里斯班旅遊是一件賞心樂事。不但可以認識新朋友,欣賞迷人景緻,呼吸新鮮空氣… 還有物價和旅行成本都較悉尼和墨爾本相對便宜,特別適合我們這些貧窮的背包客。 我去過布里斯班兩次,合共生㓉了一年半。我認為沒有地方比布里斯班更適合旅遊。每當我認識一些背包客朋友,我都會推薦他們去布里斯班。世界著名的旅遊指南「孤獨星球」介紹布里斯班為澳大利亞最酷,最時尚的城市,是最有希望的明日之星。所以你千萬不能錯過這個地方!在我看來,布里斯班絕對值得一去,至少一生人一次,原因是甘的: 為什麼你應該馬上出發去布里斯班的六個原因 01 | 你會遇到友善的人 俗語有云「出外靠朋友」,當我翻看臉書的時候,突然發現我在布里斯班認識的朋友已經比香港的朋友還要多。當地人自然流露的熱情,親切的態度,使你有天涯若比鄰的感覺。此外,你還會遇到很多來自世界各地的好朋友。無論你走到哪裡,你都會碰上一個友好的微笑和真誠的問侯,所以不要害羞! 02 | 天堂般的海灘和沙島 感覺就如置身在天堂一般,這樣的形容一點也沒有誇張,世界上大概沒有比這裡更好的海灘。黃金海岸的衝浪者天堂距離城市只有一個小時左右的車程,我不敢說這是最好的沙灘,