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

“Understanding the Java 7: the Core techniques and best practice” covers Java SE 7 new features and deep dive of Java platform core features, including JVM internals, byte code manipulation, class loader, generics, security, concurrent programming and serialization.

(Simplifed Chinese edition)

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

AngularJS - Simple Collapse Directive

Feb 13, 2015

Collapse is a common control used in web pages. Users can click to expand or collapse it. Bootstrap has a simple declarative way to create collapse. But Bootstrap’s collapse doesn’t work if the markup is generated dynamically using AngularJS, because it relies on element id to match target element. For example, following code doesn’t work because id is generated dynamically using Collapse.

Use Synapse to workaround AWS ELB static IP limitations

Jan 21, 2015

Problem

The system receives data from a third-party service using TCP sockets. The service requires a static IP address to send the data. Several app nodes are created to receive and process data. AWS ELB is used as the load balancer for app nodes. But currently AWS ELB only has host name, but no static IP address. AWS has elastic IP addresses which are static, but cannot be associated with ELB.

Spring RestTemplate Basic Authentication

Jan 17, 2015

I’m using Spring RestTemplate to consume REST service with basic authentication, so I need a way to set the username and password. After running some searches, it turns out that it’s not that easy to set the username and password directly. So I manually created the Authorization header.