楊程皓 (Yang, Cheng-Hao)

Android Software Developer

  Taipei City, Taiwan

Android software engineer with 3+ years experience. Now I am employed at ASUS for developing and maintaining ZenFone & RogPhone built-in APK, such as FileManager, Gallery. Furthermore, designing RogPhone SDK for Unity developers.

Familiar with Kotlin, Java and Python, also experienced in improving performance, maintaining ContentProvider and refactoring complicated architecture by design pattern and Object-Oriented Programming.

       

email: [email protected]

Skills

Programming Language / Tools


  • Kotlin (1~2 years)
  • Java (3 years)
  • Python
  • C# 
  • Git (3 years)


Domain Knowledge


  • MVC / MVP / MVVM
  • Room Persistence Library
  • Retrofit
  • Design Pattern
    • Strategy, Singleton, Observer, Decorator, etc.
  • Object-Oriented Programming
  • Machine Learning: Genetic Algorithm, mobileNet

Work Experience

Senior Software Engineer  •  ASUS

Nov, 2017 - Present


ASUS FileManager 

Developing and maintaining file management app in Zenfone

  • Picker Mode - handle Intent.ACTION_PICK to select files from other app 
  • Ensure copy files task won't be interrupted - Add foreground service to prevent task be killed
  • Managing file system (Internal storage, SD card) by Media Provider
  • Performance improved
    • Category: manage multi-thread to avoid serial thread blocked
    • ListView: using Asynctask to load data from media provider in getView() to achieve 60 fps
    • Counting files: modify SQLite grammar to speed up counting
  • Refactor 
    • Avoid new threads repeatedly by using AsyncTaskLoader with strategy pattern to load files
    • Porting with Android Q, R: refactor many functions with unit test to ensure the consistency
    • Handle multiple mimeType when opening files
  • Applying ZenUI style with custom layout and custom view
    • HomePage (Category table layout, storage list, tool table), Storage Analyzer (CardView, animation) and Custom Permission Dialog

Asus Gallery 

Developing and maintaining photos and videos viewing app in Zenfone

  • Train UserProfile model (age & gender estimator) by mobileNet with Transfer Learning and integrate to ASUS Gallery 
  • Allow other app query our inferred result by query content provider of UserProfile
  • Offer parameters to retouch photos

ROG Phone SDK 

Developing SDK of providing main function of ROG Phone (adjust FPS, speed up CPU performance, Aura Lighting, etc) and controlling ROG accessories for Unity developer 

  • ROG Phone SDK 
    • Handle Input Event (Key, Motion) to customize ROG Kunai Gamepad controls
    • Design APIs to Unity game developers
  • Demo APK
    • Using Unity3D and C# to build APK with UnityEngine to demonstrate functions of ROG Phone SDK

Intern  •  Institute for Information Industry

July, 2016 - Mar, 2017

GMiner

Proposed a clustering algorithm for highlighting inactive, quasi-insider accounts, or other potential cyber-security risks from real-environment dataset

Education

National Taiwan University of Science and Technology

Electronic Engineering, GPA 3.7/4.3

2015 - 2017

Tamkang University

Department of electrical and computer engineering

2011 - 2015


Taiwan Weather

Get weather information of cities in Taiwan.

  • Used techniques
    • Kotlin
    • MVVM
    • Data binding
    • Recycle view, ViewPager
    • Share Preference

GenderAgePredictor

This is an GenderAgePredictor which was trained by transfer learning with mobileNet. It can infer user's gender and age by front Camera

  • Used techniques
    • Kotlin, Java, Python
    • Transfer Learning with MobileNet
    • Image Processing


ASUS Gallery - Demo with test APK

Demo APK send face image to UserProfile model in ASUS Gallery to infer age & gender, also query inferred result from content provider 

  • Used techniques
    • Kotlin, Java
    • MobileNet
    • SQLite
    • Content Provider


ASUS RogPlugin for Unity

Support to TwinView, ROG Kunai Gamepad and Aura lighting. Allows developers to adjust the FPS and CPU performance of ROG Phone

  • Used techniques
    • Kotlin (Build Sdk to aar for Unity3D Project)
    • Unity3D, C#
    • API design with Android Framework
    • Handle InputEvent  from ROG Kunai Gamepad

Powered by CakeResumePowered by CakeResume