# technology ## projects ### Penny Delivers Inc. > Lead Engineer *Oct 2015 - Jun 2016* Multi-city dispatching, routing and driver managing platform for on demand food delivery service. Nodejs Restful API backend with React + Redux front-end with server side-rendering. ### PingTank Inc. > Deputy CTO/Technical Lead *May 2014 - Present* PingTank App allows you to customize your photos and videos with fun and engaging 2D and 3D animation overlays to truly express how you feel. PingTank packages complex animations using existing video standards which can be easily delivered, previewed and processed with photos or videos on multiple platforms, including iOS, Android. This provides flexibilities to fast delivery of new animations to mobile clients. The backend API and services are written in node.js using micro-service architecture supported by open source projects **minion** (github.com/CapitalGene/minion) and **broker.node** (github.com/CapitalGene/broker.node) with **RabbitMQ** as messenger broker: * HTTP resource API and oauth2 authentication are based on *expressjs* framework. * Timeline compilation, video encoding, notification, logging, and statistics aggregating tasks are separated into individual `minion` workers. * API and workers are packaged into *Docker* images for testing and deployments. In order to achieve maximum flexibility, availability, rapid deployment, scalability and cross-region datacenters (Azure and AWS), backend is structured with: * **CoreOS** as operating system for cluster management and Docker deployement. * **Apache Mesos** and **Mesoshere Marathon** for Docker orchestration * **Haproxy**, in connection with Marathon, for service discovery and load-balancing PingTank services consume and generate multiple types of data, and different database and storage are used to achieve high scalability and cost efficiency: * **MongoDb** stores essential user, social and media data. * User generated media are stored on Azure Storage Blob. * **Cassandra** is used to store user timeline and metrics, e.g. animations and media view counts. * Request logs are sent to Elasticsearch via Logstash before stored into Azure Storage Table * **Elasticsearch** supports real-time suggestions, searching and internal monitoring. #### Related Projects * PingTank iOS App - Written in Swift, using open source libraries: alamofire, PromiseKit, and Starscream(websocket) to support communications with Restful API and oAuth2 authentication. - GPU (OpenGL) assisted program to allow users rapidly preview animations overlay with their own photos and videos. * pingtank.com - isomorphic (server side rendering) using [ReactJS](https://facebook.github.io/react/) and [fluxible](http://fluxible.io) framework * [broker.node](https://github.com/CapitalGene/broker.node) (node.js, *Open Source* MIT) - Promise oriented messaging library for `RabbitMQ` * [minion](https://github.com/CapitalGene/minion) (node.js, *Open Source* MIT) - Distributed Task Queue based on `broker.node` and `RabbitMQ` ### owl.gift > *May 2014 - Present* A company imports and distributes Monseuil's soft toy products, including "Louise the Owl" appeared in the 2003 movie "Lost In Translation" #### Related Projects * [Angular Image Zoom](https://github.com/owlsomely/angular-image-zoom) (*Open Source* MIT) > Native [AngularJS](https://angularjs.org/) Directive provides image hover zoom feature * Shopify Theme ([liquid](https://github.com/Shopify/liquid)) > Liquid template development using [Bootstrap](http://getbootstrap.com) + [AngularJS](https://angularjs.org/) * Social Photos System * Automatically monitor hashtags and timelines from Facebook (via [facebook-node-sdk](https://github.com/Thuzi/facebook-node-sdk)), Instagram (via [instagram-node](https://github.com/teleportd/instagram-node)) and Twitter. * Photos are cached to ``Azure Storage`` blobs and delivered by ``Azure CDN`` * Backend/API: NodeJS + [ExpressJS](http://expressjs.com) + [azure-sdk-for-node](https://github.com/Azure/azure-sdk-for-node) * Integration with Shopify using [AngularJS](https://angularjs.org/) ### Feedcry > May 2009 - Present A social news aggregator that gathers news articles from various sources and presents them to users in a simple, clean, fast, and unified reading experience across multiple platforms, e.g. browsers and mobile devices. Those sources include RSS, Twitter timeline and lists, Facebook and other third party sources. #### Overview * Backend/API (Running on [Azure](http://azure.microsoft.com/), Debian 7 + Nginx) * NodeJS + [ExpressJS](http://expressjs.com) + Oauth2 * Database (High Scalability) * MongoDB(Store User, feed related info, statistics), Azure Storage Table/Queue (Store feed items, images, read/unread items) * Worker * Use [Celery (Python)](http://www.celeryproject.org) + [RabbitMQ](http://www.rabbitmq.com) (Message Broker) > Fetch feed items, parse article etc. * Use [NLTK 3.0](http://www.nltk.org/) for: > Article summarization and keywords extraction. * [Redis](http://redis.io) as cache * Fontend/Browser App * [AngularJS](https://angularjs.org/) * Handle Oauth2 and manage and fetch feeds/feed items via API * Infinity scroll * [angular-ui/ui-router](https://github.com/angular-ui/ui-router) * [angular-ui/bootstrap](http://angular-ui.github.io/bootstrap/) * [PureCSS](http://purecss.io) #### Related Projects * [AzureODM (Python)](https://github.com/Feedcry/AzureODM-py) (*Open Source* BSD) > [Mongoengine](https://github.com/MongoEngine) inspired lightweight ODM for Azure Table Service * [AzureODM-nodejs](https://github.com/Feedcry/AzureODM-nodejs) (*Open Source* BSD) > A Lightweight ODM for Azure Table Storage Services, inspired by Mongoose ### CapitalGene > June 2013 - February 2014 a crowd-sourcing, event driven financial markets analyzing platform #### Overview * Backend/API Server * [Zend Framework 2 (PHP)](http://framework.zend.com) * [Doctrine ORM + ODM](http://www.doctrine-project.org) * Database: MySQL + MongoDb * App (iOS, Objective-C) * [RestKit](https://github.com/RestKit/RestKit) #### Related Projects * [objc-CGCalendarView](https://github.com/CapitalGene/objc-CGCalendarView) (*Open Source* MIT) > A Lightweight Horizontal Calendar/Date Picker inspired by Square's TimesSquare * It uses `UITableView` + *Day* cells (`UITableViewCell`) will be reused to limit memory footprint. * It uses `NSCalendar` to support internationalization and localization. ### StarkLED > March 2011 - November 2013 Develop and manufacture high power LED fixtures * [Wireless Controlled Multi-Lights High Power LED Lighting System](http://www.starkled.com/led-aquarium-light/blunova) * Designed with ``AutoDesk Inventor``, ``AutoDesk CAD``. * [3D Animation + Video Composting](https://www.youtube.com/watch?v=m5B2SRKPxzw) * Virtual Room (Sunrise, sunset animation) generated by ``AutoDesk 3ds Max`` (rendered with [V-Ray for 3ds Max](http://www.chaosgroup.com/en/2/vray.html)). * Raw Footage of the fish tank was shot in front of green-screen and composted with ``Adobe Premier`` + ``Adobe After Effects``. * Website (CMS) development based on [WordPress](http://wordpress.org) * [Customize Knowledge Base (WordPress Plugin)](http://www.starkled.com/support/kb) * Support System (based on [OsTicket](http://osticket.com)) Integration via WordPress Plugin ### Facebook App > December 2007 - January 2008 * http://apps.facebook.com/yoursalary/ (discontinued) * http://apps.facebook.com/whatcolor (discontinued) ### kaoshi.wobuxihuan.org > June 2006 - May 2008 An open exam preparation website based on [MediaWiki](http://www.mediawiki.org/wiki/MediaWiki) #### Related Projects * [Add Article to Category (MediaWiki Extension)](http://www.mediawiki.org/wiki/Extension:Add_Article_to_Category) (*Open Source* MIT) * [Google Custom Search Engine (MediaWiki Extension)](http://www.mediawiki.org/wiki/Extension:Google_Custom_Search_Engine) (*Open Source* MIT) ## patents ### 3D LED Display > China CN101162560 (*Filed October 11, 2006*) A method to display 3D images (holograms) by spinning an array of LEDs both horizontally and vertically. Position of the array is monitored in real-time by a MCU which flashes each LED when it reaches the point corresponding to that of the 3D image. * [Google Patent Link (English/Google Translated)](http://www.google.com/patents/CN101162560A) * [Google Patent Link (Chinese)](http://www.google.com/patents/CN101162560A?cl=zh) ## education * University of Southern California > 2007 - 2011 BS, Electrical and Electronics Engineering, Business Entrepreneurship ## contact * [Email: code@chen.technology](mailto:code@chen.technology) * [GitHub: @uschen](https://github.com/uschen) * [LinkedIn](https://www.linkedin.com/in/uschen) > last updated: 06/07/2016 10:00AM > LA, CA, USA