Printing tool Download PDF

Work History

Apr 2018Present

Senior Software Engineer

Tectus Dreamlab, Singapore
  • Solely maintaining a web app for Proceq, which produces tools for non-destructive testing (NDT) 
    - Worked on chart visualizations with Highcharts, geo-analytics with Google Maps
    - Built an offline HTML-based report with jsdom
  • Collaborated on the Screening Eagle platform, a management tool for the construction industry
    - Constructed a dynamic form builder for issue tracking
    - Worked with PDF rendering with PSPDFKit and 3D rendering with three.js
  • Spearheaded an integrated testing effort that brought bugs down to a near-zero level
  • Integrated i18n into the web app
  • Implemented a deployment pipeline for a one-click build
  • Collaborated with the other departments (app, backend, design, etc.) to complete deliverables on time

Tech stack
Frontend: React, redux, redux-saga, recompose, ant.design, stylus, storybook, Webpack 4, Flow
QA: Jest, Cypress, Sentry
Infrastructure: Gitlab CI, Jenkins pipelines, Docker, AWS
Software Development: Gitlab, Scrum, JIRA

Feb 2015Mar 2018

Frontend Developer

Spacebib, Singapore
  • Built the public-facing and internal admin site for a sporting events platform
  • Collaborated with the backend for a seamless API integration
  • Continuously collected and iterated on design feedback to improve usability
  • Constantly monitoring integration tests and dashboard metrics to ensure site uptime

Tech stack
Frontend: React, Redux, MobX, Apollo, Bootstrap, SASS, JSPM, Webpack 2, Typescript
QA: Mocha, Selenium Webdriver, Webdriver.io, Browserstack
BackendCakePHP, GraphQL, Jenkins, Ubuntu 14.04, Linode
Software Development: Agile, Github

 

Jul 2012Apr 2014

Full Stack Developer

Pytheas Travel, Singapore
  • Built a CMS catering to 50+ travel agents
  • Migrated 35K customers, 1K products and 5 clients to our CMS, preserving DNS and email functionality 
  • Automated the deployment of development and production servers with Puppet
  • Built a proof-of-concept logging framework based on Elasticsearch 

Tech stack
WebCodeigniter 2, JQuery
QA: PHPUnit, Selenium Grid 
DevOps: postfix, Nginx, Jenkins, AWS, Puppet, CentOS6
Software Development: In-house SVN repository

Mar 2012Jun 2012

Web Developer

Doorstep Luxury​, Singapore
  • Developed a Wordpress e-commerce site for luxury goods, creating and modifying plugins as necessary
  • Built a standalone web-based point-of-sale (POS) system to scan from a webcam and print receipts

Dec 2011Feb 2012

Web Developer

KLIF Media, Singapore
  • Built a prototype of a social media site on Symfony 2

Education

Aug 2008Jun 2011

Bachelor of Arts (B. A.) Psychology

National University of Singapore
  • Electives in Programming and Linguistics

Personal Projects

XIVAnalysis (https://github.com/xiankai/xivanalysis)
  - Collaborating with other users to analyse combat performance in Final Fantasy XIV
  - Using React, SemanticUICSS Modules

Pokémon Go Map (https://github.com/xiankai/sg-pokemongo-ex-raid-map)
  - A local map to track and predict locations of popular EX-raids in Pokémon Go, serving 3k+ users
  - Built with Typescript, MobXLeaftlet and d3.js
  - Designed to be replicated for other countries as well
  - Auto-updated data from a google drive spreadsheet 
  - Implemented various mapping techniques like (S2 cells, point-in-polygon) to visualize map data
  - Used Mapbox for map layers before switching to OpenStreetMap (OSM)

Triple Triad (https://github.com/xiankai/triple-triad-solver)
  - A multiplayer implementation of a mini-game in Final Fantasy XIV, using peerjs to polyfill WebRTC
  - Using redux-observables/RxJS for state management

Web Crawler (https://github.com/xiankai/Disney-Store)
  - Crawled the Disney Store for product updates to notify up to 15 subscribers of new stock
  - Used cURL to crawl pages, redis to store hourly data and Mailchimp to send notifications

Discord bot (https://github.com/xiankai/pusheen-the-fc-helper)
  - Another web crawler to crawl ten thousands of pages using a job queue mechanism
  - Used phantomjs to crawl pages, redis to store data and node.js to host the chat bot interface

Server Administration
  - Managed a few VPS to host various bots and websites for other people
  - Migrated the server 6 times, alternating between Linode, AWS and Digital Ocean, using rsync, mysqldump and Puppet to quickly rebuild environments, preserve data, and maintain 100% uptime

Meetup Talks

Skills