1st year working anniversary in NixPlay

September 12, 2017 – 1st working anniversary

What I gain in a year

  1. Working with like-minded people. Talking to them is so easy nowadays because we share the same vocabulary.
  2. A company that really invests into their employees. I am still amazed that my employer purchased that many subscriptions of Frontend Master for the dev team. I cannot speak for my colleagues but they are very useful to me.
  3. Pick up ES6. I did not know what fat arrow () => ‘hello world’ meant when I first started there. Now, I am applying ES6 features in project with relative ease.
  4. Understand the concept of JS from expert. Watching Frontend Masters courses after work is a valuable personal investment. Now, I am more confident in JS coding and make less mistakes on the job.
  5. Able to structure component-based AngularJS project. The concept of component-based architecture in AngularJS is solidified in my brain after watching Frontend Masters course
  6. Exposure to two Amazon APIs. AWS Cognito API to implement authentication and account management for our in-house system. AWS API gateway to expose restful endpoints of our in-house system.
  7. Exposure to two Google APIs: Google Place API and Google Calendar API.
  8. Good practice of Sass, Flexbox and CSS. I watched tutorials on Sass and FlexBox and tried to fix CSS bugs on my own. My CSS is still terrible but my colleagues come to rescue from time to time


CSS and efficiency are two main problems in my opinion. I can tackle the tasks assigned to me eventually but I always take a bit more time than my colleagues. Getting the job done is not enough, using appropriate design pattern and data structure to solve it in reasonable amount time is more important to the team and the entire company.
I am a long way to go but I am getting there.

HK PolyU Msc of Computing – Year 2 IT Semester 2

Poly U Msc of Computing – IT 2015-2016 Year Semester 2 completed on 2016-04-22

1) COMP5151 – Advanced Database System:
Final Grade: A

  1. Topics:
    1. Calculation of access cost of hash join, merge join, nested loop join, block nested join
    2. Equivalence Rule to transform a relational algebra tree to another relational algebra tree to produce better cost
    3. Dynamic programming to find the best execution plan
    4. Database Concurrency, Deadlock, Precedence Graph, Wait-Die and Wound-Wait, Timestamp Ordering, Optimistic Concurrency Control
    5. Database Recovery (Checkpoint – Undo and Redo)
    6. Distributed Computing, Semi Join
    7. Spatial Computing, R-tree, R-tree search query, R-tree intersection
    8. Multimedia Index Computing, Two-step processing, Multi-step processing
    9. Database Hardware, CUDA, GPL, SSD
  2. Assignment 1 – 100/100
  3. Assignment 2 – 100/100
  4. Midterm – 82/100
  5. Individual Project – Studied two research papers on OLTP Database Partitioning Tools: Horiculture and JECB and wrote a paper to show what I actually learnt.   Grade: 95/100
    1. Paper was consisted of Introduction, Problem Statement, Description on the concepts of the tools, Analysis and Comparison, and finally Conclusion.
    2. To show my understanding of both papers, I created my own example of database schema, stored procedures, foreign key constraints and workload trace and applied it throughout all the sections of the paper
    3. Horiculture used branch and bound algorithm to prune the size of search space to find the partition solution that yield the lowest cost. A partition solution may consist of horizontal partitioning of replicated table(s), read-only table(s), secondary index(es) and stored procedure routing parameter(s).
    4. JECB used foreign key relationships to join tables by columns to form join paths and join trees.  Then, the joined columns became the partition attributes of the tables. Compatible join attributes were merged and the finer one was used to construct join paths and join trees respectively. To avoid the explosion of search space, compatible join paths and join trees were merged to reduce the number of partition solutions that were constructed.  A partition solution was composed of a join tree and and an independent function.  An optimal solution was a partition solution where the independent function returned the lowest distributed cost.

2015 Year in Review

1) Complete Year 1 semester 2 and 3, and Year 2 Semester 1 despite heavy course work load
2) Attend my second Hong Kong Open Source Conference held at HKSTP
3) Attend inaugural PyCon HK 2015 Day 1 and 2 held at Cyberport
4) Join events organized by Open Source Hong Kong, Codeaholics, Open Innovation Lab and Hong Kong Node JS respectively
5) Continuously to learn MEAN stack. Firebase and open source tools (Grunt, Gulp, Bower, Yeoman)
6) Read three books this year. Beginning NodeJS, Full Stack JavaScript Development With MEAN and AngularJS Web Application Development Blueprints
7) Good health
8) Build a toy project that tracks down my event attendance; something that actually benefits me.
9) Met a PolyU classmate who shares the passion of web technology and accept my invitation to attend meetup.

10) Completed my only MOOC course in Udacity, Web tools and automation.

Goals next year :
1) Graduate next year
2) Go on my first vacation in three years
3) Read about HTML5 and CSS3 and practice Angular 1.x/2
4) Attend HKOSC 2016 (?), PyCon HK 2016 (?) and definitely TW JS Conf 2016 (Buy ticket early)
5) Try to speak clearly and communicate effectively with family, friends and colleagues
6) Enrol and finish at least 1 MOOC course. Udacity has many free courses that aim at web developers and Android developers.

HK PolyU Msc of Computing – Year 2 IT Semester 1

Poly U Msc of Computing – IT 2014-2015 Semester 1 completed on 2014-12-20

1) COMP5324 – Internet Information Retrieval:
Final Grade: A

  1. Quiz A – 19/22
  2. Quiz B
  3. Group Project – Build a search engine to query relevant documents
    1. Languages: Shell scripting, Java and C++
    2. Libraries:
      1. Apache Common Math Library
      2. Trove4j
      3. JChart
    3. Implemented Retrieval Models:
      1. Vector Space Model
      2. Boolean Retrieval Model
      3. LSI for Vector Space Model

2) COMP5325 – Distributed Computing:
Final Grade: B+

  1. Assignment 1
  2. Assignment 2
  3. Project – Build a tool to characterize YouTube Video Streaming Platform
    1. Java 7, Maven 3,  Apache Command CLI Library
    2. Argument:
      1. -v: video id
      2. -d: enable download mode
      3. -p: full path
      4. -f: filename
      5. -e: extension (mpf, flv, 3gpp, etc)
      6. -r: resolution (360p, 144p, 720p, 1440p)
      7. -x: proxy list

Beginning Node.JS

Finish reading Beginning Node.JS

Like the title indicates, this publication targets beginning coders who are in search of the first language to develop server applications.

After reading 12 out of 13 chapters, I am still unable to develop a web application using Node.js as backend.

Conclusion: Go look for second text to learn to develop back-end using Node.js