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

Front-end

HTML, JavaScript/CoffeeScript, CSS/LESS

Bootstrap, jQuery, AngularJS, Dojo, Backbone, RequireJS

Grunt, Bower, Yeoman

Back-end

Java/Scala

Spring, Hibernate, JPA, JSP, servlet

NodeJS

Ruby/Python

Infrastructure

AWS EC2/RDS/SQS/ELB

Jenkins, Gradle, Maven, Ant

Docker, Vagrant

MySQL, MongoDB

Other

REST

OOP/AOP

Agile

Publications

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

– Margaret Fuller

Book

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

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

Background

Spring Boot back-end with AngularJS front-end.

Scenario

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.

Build Apache Camel Custom Component

May 12, 2015

If you create a custom Apache Camel component, you can build it using Maven to generate necessary metadata, then this component can be auto-discovered by Camel.

Create a custom component following the guide. Add file META-INF/services/org/apache/camel/component/FOO to src/main/resources folder with content like below: