About me

Profile Picture

Full-stack software developer living in Auckland, New Zealand

Have rich experience and strong problem solving skills.
Know how to apply best practices in real product development.
A quick learner and always want to learn emerging techniques.

Skills & Interests

Learn as if you were to live forever.

– Mahatma Gandhi


HTML, JavaScript/CoffeeScript, CSS/LESS

Bootstrap, jQuery, AngularJS, Dojo, Backbone, RequireJS

Grunt, Bower, Yeoman



Spring, Hibernate, JPA, JSP, servlet





Jenkins, Gradle, Maven, Ant

Docker, Vagrant

MySQL, MongoDB






If you have knowledge, let others light their candles in it.

– Margaret Fuller


Lodash Cookbook

Start learning lodash from this book. Lodash can increase your productivity dramatically and it’s an essential tool in your JavaScript toolbox.
This book is a very good introduction to lodash. It covers core concepts and functions provided by lodash.

Technical articles

A regular author of IBM developerWorks China and InfoQ China website with more than 50 published technical articles covering various technical topics.

(Simplifed Chinese)

Recent Posts

NodeJS API proxy with CORS support

Jul 22, 2015

Our application’s backend is Java-based and exports REST API, frontend is AngularJS-based. During frontend development, use Grunt connect to start the development server for CoffeeScript/LESS and static files. To enable AngularJS to access the API which running on different port, we need a proxy with CORS support. So I created a simple proxy server using connect and node-http-proxy.

Tips for using ProGuard with Spring framework

Jun 26, 2015

ProGuard is a is a free Java class file shrinker, optimizer, obfuscator, and preverifier. You may want to use ProGuard to obfuscate your Java binary code first before you release it to customers, especially for Android apps, on-premise enterprise apps or libraries. The whole obfuscation process is very painful and you need to run a lot of tests to make sure your code still works properly after obfuscation.

Here are some tips to use ProGuard, especially when Spring framework is used.

AngularJS - Features Toggle with Grunt Build

Jun 13, 2015


Spring Boot back-end with AngularJS front-end.


Our product has two versions: lite version and standard version. Some features are only available in standard version. So some UI components need to be hidden in lite version. This is controlled by build process. By passing different flags to the build process, different versions can be built. Front-end code uses the same flag to show/hide different components.