Software Engineer2019 - 2019Duolingo
Technologies: RxJava, Lottie, Android, Kotlin, REST, Clean Code, Agile Software Development, Android SDK
- Developed new features specifically targeted to users in China—for example, user signup via WeChat, share via WeChat and earn rewards, etc.
- Created A/B tests to battle-test new features, UX changes, optimizations, etc.
- Wrote custom UI components—for example, a UI widget that can take country code and phone number input, validate it on the fly, and then transform it for verification code input.
- Implemented fluid animations with Lottie, and optimized animation loading, replay, and memory footprint.
- Examined memory usage to find possible optimization points, memory leaks, etc., and fixed them.
Android/iOS Developer2018 - 2018iVerified
Technologies: Tesseract, Core ML, OpenCV, Swift, Java, iOS, Android, Android SDK, iOS SDK
- Improved the scanning of physical identity documents using the device camera by optimizing the detection and processing pipeline.
- Used OpenCV and machine learning to detect ID documents better and classify the data.
- Used Tesseract to extract data from image segments.
- Designed and implemented a two-way data sync process, ensuring that the documents and verification data were securely kept in sync between the server and the apps.
- Set up continuous deployment (testing, building, signing, and releasing) with Fastlane and a remote Jenkins server.
Senior Android/iOS Developer2017 - 2018A0Paper Inc.
Technologies: Gradle, CocoaPods, Maven, iOS, Android, Swift, Java, Android SDK, iOS SDK
- Wrote SDKs in Java and Swift for Treasuredata based on their official SDK. Improved local caching, optimized memory usage, added scheduled batch uploads in the background, and improved the fluidity of the API.
- Wrote the 1stScreen SDK for Android (Java) and iOS (Swift) to help collect numerous analytics data, with device data collection made easier and a default fallback strategy for cases when hardware or permission might be unavailable.
- Deployed and released the Android SDK to a private Maven repository so that only authorized developers could access the SDK.
- Deployed and released the iOS SDK to a private CocoaPods repository so that only authorized developers could access the SDK. The library is distributed as a binary.
- Built a reusable ad component that could be embedded in-app content and reveal itself upon scrolling as per the set criteria.
Lead Engineer2016 - 2018Credntia
Technologies: Dagger, Realm, Mixpanel, Fabric, RxSwift, RxJava, JSON Web Tokens (JWT), Go, Swift, Java, OpenCV, Encryption, Parse, Firebase, iOS, Android, Mobile Payments, Android SDK, iOS SDK
- Led the planning, architecture, development, scaling, and deployment of the Android and iOS apps.
- Chose a new architecture (VIPER) for the iOS app for better performance and suggested new DBMS and security enhancement for proper encryption and data protection.
- Designed and implemented a new clean architecture for the Android app for better performance, stability, and scale. Used Dagger 2 for dependency injection, RxJava, and reactive extensions for reactive programming support.
- Worked on achieving HIPAA compliance for the Android and iOS apps. All sensitive data were protected with 256-bit AES encryption, stored locally, and covered with two layers of authentication-based security.
- Worked with the team to design data structure and infrastructure for the Parse and Firebase (later) back end.
- Worked with the team to design a secured REST API for third parties.
- Developed a new barcode scanner library for Android based on Google's Mobile Vision API, especially for reading PDF417 barcodes more accurately and faster than ZXing.
- Developed an OpenCV-based mobile vision library that can detect ID documents (e.g., passport and driver's license) in real-time using the device camera.
Lead Engineer2015 - 2017PartyLife
Technologies: Image Processing, Cache, REST, SQLite, Facebook API, ZOOZ API, Location Services, Google Maps API, MySQL, CodeIgniter, PHP, iOS, Android, Swift, Java, Mobile Payments, Android SDK, iOS SDK
- Did requirement analysis with the founders and made a detailed technical specification.
- Designed the system architecture and defined the infrastructure components based on the requirements and business goals.
- Wrote a detailed specification for the required back-end service and led the web team to build a robust REST API.
- Developed the native Android and iOS apps with social features like profiles, messaging, search, etc.
- Designed the continuous development, internal testing, and deployment pipeline for continuous improvement of the platform.
Independent Android/iOS Developer2011 - 2017Freelance
Technologies: PHP, XML, C#, SQL, Swift, iOS, Java, Android, Agile Software Development, Git, Maps, Geolocation, Payment APIs, XMPP, Mobile Navigation, PKI, Data Encryption, Camera API, Bluetooth, Mobile GPS, REST
- Developed an Uber-like taxi booking system with separate apps for drivers and passengers. Riders could filter locally available cars based on their types and features, communicate with drivers in real-time, and pay with a card for the ride.
- Developed an Android app used to facilitate and track the delivery of packages. Delivery reports were digitally signed, and a web dashboard provided tracking, verification, and review capabilities.
- Developed an Android app for finding childcare services. Users could perform location-based searches, read client reviews, and contact childcare centers. Further, the app provided driving directions and real-time navigation to childcare centers.
- Implemented several image warping algorithms on Android, including bulge effect, explosion, implosion, etc.
- Developed an Android app for budget tracking and automatic budget population, using user data (e.g., location, profession, income, budget, and expense history) and statistical models to generate an optimal budget for maximizing savings.
- Developed an Android app for a security company facilitating reporting and supervision of guard patrol activities, routes, arrests, or incidents. GPS and cameras were utilized to capture important location and incident data.
- Utilized Git and Jira for source control and issue tracking. Developed using MVC with Agile methodologies.
- Developed an Android app that allowed users to take or upload photos and apply basic filters before sharing them on Facebook and Twitter. Further, users could schedule their posts to upload at a particular time.
Lead Android/iOS Developer2013 - 2015Cabeze
Technologies: PayPal API, Geolocation, Google Maps, SQLite, REST, Objective-C, Java, iOS, Android, Mobile Payments, Android SDK, iOS SDK
- Developed Android and iOS apps for an Uber-like service. Developed both driver and passenger apps.
- Developed innovative UI libraries (sliding drawers, floating views, etc.) to build a modern yet smooth user experience.
- Utilized Google Maps API and device's GPS for optimized turn by turn driving navigation and ETA calculation.
- Developed, tested, and optimized data refresh strategy for maps to provide an almost real-time experience.
- Developed, tested, and optimized a push- and pull-based communication strategy between driver and passenger apps to ensure a smooth overall experience.
- Integrated payment gateways, e.g., PayPal and credit/debit cards.
Android Developer2013 - 2013Handup
Technologies: GPS, Google Maps API, SQLite, REST, Regular Expressions, OpenGL ES, Java, Android, Android SDK
- Developed a collaborative voting app for secure voting.
- Developed a text input control based on Edittext that could identify, categorize, and validate entered text using regular expressions and showed added items as chips (https://material-ui.com/demos/chips/).
- Developed a UI widget that allowed the user to drag and drop the items, e.g., voting options, to reorder and merge in order rank the options.
- Wrote a horizontal bar chart widget and a pie chart widget to show voting statistics in an interactive way.
- Developed a statistical ranking algorithm and implemented that for ranked votes.
- Used geofencing for notifying users when they are in a designated voting location. Used GPS and other location APIs to filter ongoing location-based votings.