1. Han Yan
Address: Room1002, Building 14, 1166 Guanglan Road, Pudong District, Shanghai, China
Mobile: +86-13041619832 Email: hanyanggg@hotmail.com
Skills
JAVA programming, backend architecture, database related skills:
Solid knowledge aboutOOP, data structures,algorithms,and common design patterns
Enough working experience in core Java, J2EE, JVM optimization and multithreading programming
Specialized in Spring, nice understanding about its core,DATA, RESTFUL, JMS, JMX, TEST modules
Enough experience in building SOA, MVC, RESTFUL projects
Proficientin MySQL and skilled at ORACLE, handled manycases of database performance tuning
Enough experience with NoSQL databases,especiallyin MongoDB
Mastered data caching skills with GemFire and Redis,experienced in large-scale server-side architecture
Python programming, scripting language development skills:
Very skilled atPython, Proficient in Django,experienced in machine learning with Scipy and Numpy
Skilled at PHP and shell scripting,basic experience with RubyOn Rails
Researchskills:
Computer graphics and vision algorithms in C,C++, MatLab, OpenGL, OpenCV
Studied recommendation systems deeplythrough research and real work experience
Fundamental studyaboutdata mining and Hadoop technologies
Education
New York University New York, NY
Master of Science in Computer Science,January 2012 Overall GPA: 3.700
New York University New York, NY
Master of Science in Chemistry,January 2010 Overall GPA: 3.646
Nanjing University of Aeronautics and Astronautics Nanjing,China
Bachelor of Engineering in Material Science and Engineering,June 2006 Overall GPA: 3.37
Working Experience
Shanghai Kangkanghui Tech (Mobile healthcare startup) 09/2014-present
Senior Backend Development Engineer
Working as the core backend engineer in charge of developing major features of “Green Apple Healthcare”,
a professional social networking APP solely to ease communications between doctors and patients, providing
CRM and marketing solutions for doctors.
Accomplishments:
Created many importantfeatures such as conversation,broadcasting,gifting, leaderboard and so on.
Refactored the architecture of the entire project, adding service layer to separate logic of concerns, adding unit
test, optimizing the performance of Celery tasks and so on.
Enhanced MySQL database, performing denormalization for tables, separating reading and writing, adding
necessaryindices and so on.
Creating all business reports of the company and performing business data analysis on demand to help
leaders making decisions.
Dodopipe (Shanghai) Info Tech (Japanese Company) 03/2014-09/2014
Senior Software Engineer
Worked as the major backend engineer to develop the entire backend architecture and take charge of data
analysis and machine learning related projects.
2. Han Yan
Address: Room1002, Building 14, 1166 Guanglan Road, Pudong District, Shanghai, China
Mobile: +86-13041619832 Email: hanyanggg@hotmail.com
Accomplishments:
a) Create the supplier recommendation engine for Deecorp Corporation (Japanese Company)
Extracted data from Oracle data and abstracteach transaction into a specific preference value about supplier.
Used MeCab to perform word segmentation for searching keywords and keywords in transactions.
Used Gemsim to convert word segments into feature vectors and find similarities between searching keywords
and transactions to find similar transactions.
Used Crab lib from Scikits to create preference matrix as corpus, and tried both K-Nearest Neighbors (KNN)
algorithm based on collaborative filtering and Singular Value Decomposition (SVD) algorithm based on
Latent Factor Model (LFM) to build the recommendation system.
Compared accuracy and coverage of two algorithms using LFM with different factors, and picked the SVD
algorithm under the optimal LFM as final recommendation model.
Used Django to build the web views of recommendation engine.
SVD algorithm tuning:
Dramatically enhanced LFM model generation process by training the entire corpus in advance using
Python multithreading and stored the result in several files, so that each recommendation can directly read
trained model from a target file instead of real-time training.
Greatly enhanced the Dynamic Programming algorithms and other details in SVD process, so that
extremely slow recommendations (due to the generation of very large preference matrices) is shortened from a
couple of days to tens of seconds,and the user experience is obviouslyimproved.
b) Develop LIFELOG (a wedding photos sharing APP)
Strictly followed Scrum agile developmentand Test-Driven Development (TDD) process and cycles.
Built controller layer with Spring Restful and persistence layer with Spring Data JPA architecture.
Built service layer with Hexagonal Architecture (posts and adapters) so that the service layer is completely
separated with other layers, and the business logic can be thoroughlytested with all kinds of tests.
Managed the whole projectwith Gradle, and integrated auto deploymentinto Gradle with shell and Groovy.
Compared accuracy and coverage of two algorithms using LFM with different factors, and picked the SVD
algorithm under the optimal LFM as final recommendation model.
Used Django to build the web views of recommendation engine.
Citigroup Software Technology and Services (Shanghai) 10/2012-02/2014
Java Developer
Joined the investment-side of Citigroup to develop and enhance its Fixed Income Trade Processing System (TPS)
under its Institutional Clients Group (ICG) Department.
Concentrated on tuning the logic and the performance of Query Service ---- the core service in TPS that is
a distributed message processing and delivering platform based on TIBCO Enterprise Message Service (EMS)
and VMware GemFire caching technology.
Accomplishments:
Enhanced performance by adding a filter to filter out messages reporting intermediate states and set priority
in message header based on the importance ofthe trade state the message contains.
Dramatically improved performance by enabling concurrent message processing using auto member
detecting mechanism with GemFire locators via maintaining a group of Query Serivce servers in a distributed
system, delivering only a portion of messages to each server based on selectors in message consumers in
each service, and using GemFire auto replication to get the restof messages through synchronization.
3. Han Yan
Address: Room1002, Building 14, 1166 Guanglan Road, Pudong District, Shanghai, China
Mobile: +86-13041619832 Email: hanyanggg@hotmail.com
Dramatically improved starting time by skipping initial loading from database via establishing reliable
GemFire region replication mechanism between servers.
Reorganize the structure and boosted up the service by separating initial data loading logic from real-time
message handling logic via reconstructing the architecture of the handler classes and interfaces.
Achieve high availability by pairing servers into master and slave mode and adopting considerable auto
failover solution and emergencymanual failover strategy.
Strengthen the stability by enabling Concurrent Mark Sweep Garbage Collector (CMS GC) to avoid full GC
and inserting a cleaner in the code to auto clean stale messages which are removed from Gemfire region to
avoid hitting memorylimitduring running.
Other works:
Refactored and tuned performance of QcFig Service ---- a service that provides all the financial quality control
works and validations for messages thatcome from upstream systems.
Wrote all kinds of utilities in Java, Shell,Perl, and PL/SQL to for testing and repetitive tasks.
Backbone Entertainment (Emeryville, CA) 03/2012-09/2012
Software Engineer (with a shipped title in Dance Central 3)
Collaborate with HarmonixMusic Systems to develop Dance Central 3, a global Kinect-based XBOX360 game.
Accomplishments:
Build the whole achievementsystem from lastgeneration and other trivial features using C++
Design and editgame UIcontents using Harmonix internal scripting language and editing tools
Create handy scripttools to perform repetitive tasks using Python
Collectand integrate data from two working servers using Perforce
Fix various crushes, delay factors, and malfunctions, and solve frequent conflicts between game features due
to design changes using most commondebugging methods