Freelancer2019 - PRESENTSelf-employed
- Developed a web app in the security field for Deloitte. The main technologies used include React, AWS Lambda, and Python.
- Founded Intelliavant and served a couple of small businesses by creating web apps and websites for them, including a management app for a client's delivery service and several corporate portals. Tech keywords are React, Python, Django, and WordPress.
- Co-founded another software company and ran a private SaaS service. Tech keywords are React, Python, Django, and AWS.
Principal Engineer2016 - 2019Juice Mobile
- Collaborated with the product manager to develop features.
- Analyzed the requirements and estimated the effort.
- Designed the software architecture, then coded the feature. Also wrote the unit and E2E tests.
- Led a refactoring project on the front-end. The old codebase was based on AngularJS, which lacked modularity and had a lot of coupling.
- Analyzed the requirements and our current architecture. I then borrowed concepts from React/Redux and designed a new architecture for our codebase.
- Created a customized web component (AngularJS and Redux) to make the codebase more modular and much easier for future development.
- Migrated the current product, which was in AngularJS, and rewrote every screen from scratch with Angular 6.
- Migrated some UI logic from the old codebase. Used Angular and ng2-redux.
Senior Software Engineer2012 - 2016Envisage Engagement Technologies
- Built a CMS system with Python/Django (back-end), jQuery (front-end), and MySQL/Redis (database).
- Supported the CI team for deployment of the CMS and integration with other systems.
- Developed a document-sign system for a mobile application with Python/Django (back-end) and AngularJS (front-end).
- Designed a RESTful API for document management.
- Conducted corporate research, specifically exploring AR (Augmented Reality) SDKs and created an AR proof of concept on the Android phone.
Software Engineer2011 - 2012Douban, Inc.
- Designed and implemented a management system with Python for an online music service. The back-end was built with Python and a customized framework which provided the admin UI as well as a RESTful API for a streaming service. The front-end was built with HTML and jQuery for the admin UI.
- Created a framework to simplify the operations of executing queries and utilizing caches, while making them much more efficient (Python, MySQL, Memcached); this was due to lack of an object-caching mechanism in Django (back in 2011). The framework has a built-in object-cache to support massive concurrent accesses (the service has about 500,000 unique daily users).
- Designed and implemented the server side with Python for an LBS service operated by Douban (Python and Django).
- Implemented in this system an algorithm called GeoHex to encode a geolocation to a single string so that locations could be effectively indexed by a database.
- Developed campaign web pages based on the mockups provided by product managers and UI designers whenever necessary such as top ten songs every year or campaigns with other partners such as MSN. Most of the web pages were built with HTML and CSS while some required Python-based back-end functionalities.
Project Manager2007 - 2010NEC Soft (Jinan) Co., Ltd.
- Handled the outsourcing of the software development and QA.
- Managed several teams to develop several applications, including a webmail system, a report-printing system, a display system, and a cell phone.
- Negotiated the requirements, specifications, and costs with clients.
- Analyzed and managed the scope, budget, expenditure, and risks of projects.
- Recruited and evaluated engineers, project leaders, and Japanese translators.
- Evaluated the requirements and designed the architecture of the systems.
- Implemented a report-printing system with C. The system was done on Solaris which takes a printed document from the API and converts it to printer commands.
System Engineer2003 - 2007NEC Soft (Jinan) Co., Ltd.
- Implemented and tested several applications for an NEC-branded featured phone (embedded Linux/C).
- Built a middle layer which adapts a CPU to the application layer of a DVD recorder (C).