Sunday, 31 December 2017

Provisioning Factory for Hardware TEE

A mobile digital Car Key SDK by using Hardware TEE (Trusted Execution Environment) technology, used as Digital Card Keys to operate your car.

Technical Stack:
  • Android Java Programming
  • Junit, Mockito, PowerMockito, Robolectric.
  • Trustsonic TEE
  • Server Certificate Pining

Saturday, 30 December 2017

My Lianyi

Match, meet, date & love. Seek fun at MyLianYi! MyLianYi is just that, an app dedicated to help singles find each other for friendship, dating and meaningful relationships. If you are single and finding it hard to meet new people, MyLianYi can help you as we will provide facilities for members to participate in networking/ dating activities. Join MyLianYi immediately, we will help to select and match the dating, and host an event to let the members know each other further. You can also send them self-introduction information to make it easier for more people to understand you.

Technical Stack:
  • Android Kotlin Programming
  • iOS Swift Programming
  • FCM notification
  • Basic Authentication
  • Sprint Boot
  • MySQL

iOS Screenshots 

Android Screenshots

Thursday, 23 November 2017

Remote Medical Monitor

Designed a solution for remote medical monitor, including an IoT device, AWS IoT broker and server and an iOS mobile App. The solution got best commercial solution award in Renesas GR Peach Design Contest in 2017.

Technical Stack:
  • iOS Objective-C Programming
  • AWS IoT, DynamoDB, Lambda Micro Service
  • Secure Communication
  • SMS and notification


Video Clips:

Tuesday, 26 September 2017

Software TEE - Virtual Car Key

This is an App for our IoT solution to serve our value customers. You can upload your TA (a file with some configurations) to our backend server, After then they can download the TA and run it.

You can use this App to lock and unlock the car, door with our smart lock, you can even start and stop the car engine, depends on the TA you uploaded to our backend server.

To be able to operate it with our smart lock, you need to “Install TA” first, then you can “Run TA”, if you have our smart lock, you should be enable to do the operation as you configured in the TA on our server.

Technical Stack:
  • Android Java Programming
  • iOS Objective-C Programming
  • Native C programming
  • WhiteBox Crypto with Key Rotation for every 3 months
  • Secure Channel Protocol
  • App Protection: Anti-tampering, Anti-debug, Anti-hooking, Root/Jailbreak detection, Android App re-signing detection.

Reference Link:

Wednesday, 11 January 2017

How to solve Tomcat – java.lang.OutOfMemoryError: PermGen in Amazon Linux AMI

Tomcat web server often suffers from java.lang.OutOfMemoryError: PermGen space whenever you deploy and un-deploy your web application couple of time. 
In this article, we will see how to fix java.lang.OutOfMemoryError: PermGen Space in tomcat server.

1. Goto Tomcat startup script file location, for Amazon Linux AMI. It locates at "/etc/rc.d/init.d/"

2. Edit the script file by "sudo nano tomcat7"

3. Add the following JAVA_OPTS at the beginning of the file after "NAME="$(basename $0)""
export JAVA_OPTS="-Xms1024m -Xmx10246m -XX:NewSize=256m -XX:MaxNewSize=356m -XX:PermSize=256m -XX:MaxPermSize=356m"

You can change the actual heap size and PermGen Space as per your requirement.

4. Restart Tomcat.

Increasing PermGen space can prevent java.lang.OutOfMemoryError: PermGen in tomcat only for some time and it will eventually occur based on how many times you redeploy your web application, its best to find the offending class which is causing a memory leak in tomcat and fix it.

Sunday, 1 January 2017

Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE environment variable to

Recently always met this issue while using Android Studio, "Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE environment variable to ..."

After Android Studio starts to support Instant Run, this issue becomes critical. If you want to use Instant Run, you should keep your gradle and gradle plugin version updated. 

First time I met this issue, I search online, luckily I can easily find the solution. But 2nd time is not so lucky, because the answer online is outdated. So the best solution is to know which version is the latest one, otherwise every time I need to waste a lot of time to find the solution.

So here is the solution.
Here is the link to check the latest version of gradle plugin.

Example to apply to root level build.gradle file (Updated on 26 Jul 2017),
classpath ''

Here is the link to check the latest version of gradle.
Example to apply to file (Released on 26 Jul 2017, updated on 26 Jul 2017),