How Gradle Plugin Works

 |  3 minute read

This article provides a summary on Android gradle plugin core use cases and talks about how the Android gradle plugin works via reading through the source code.

Screenshot 2022-07-01 at 12 02 07 PM

Read more...

UITouchEvent Propagation Revisited

 |  10 minute read

Touch event propagation and UI responder chain is one of the most frequently visited topics during iOS interviews. As there are some of the most critical concepts in this topic which can prove whether the candidate have a solid understanding regarding event and gesture detections. A summary is made in this article to discuss:

  1. how touch event propagates and gestures get recognized.
  2. how UIResponder is relevant to this process.

Read more...

Write your own Swift optionals

 |  5 minute read

This article provides a summary on the Swift optional mechanism, the source code of Swift optional can be retrieved here

@frozen
public enum Optional<Wrapped>: ExpressibleByNilLiteral {
  // The compiler has special knowledge of Optional<Wrapped>, including the fact
  // that it is an `enum` with cases named `none` and `some`.
  /// The absence of a value.

  case none
  case some(Wrapped)

After read through the codes, there are some critical knowledge which is essential to construct the implementation

Read more...

Backbone Design Patterns - Frontend

 |  5 minute read

Comparison for frontend backbone design patterns: Flux, Redux, Vuex. Since Redux is commonly know as a replacement for Flux(declared event in its official website) and the development of Vuex has taken a lot of reference from Redux, so in the overall usecases, they are very similar.

In this article, I went through all the integration documents of the three and made a short summary on each of the frameworks core concepts.

Read more...

Common TableView Protocol Design

 |  3 minute read

Summary for a common UITableView design pattern to support the following cases:

Use Cases Description
A Single section with single empty/loading/error layout
B Multiple section in table,
but the table have a unified empty/loading/error layout
C Multiple section in table, each has isolated loading lifecyle
and display its own empty/loading/error layout
Read more...

My Understanding on the Role of Tech Lead

 |  4 minute read

The reason I am writing this is sometimes(quite a lot of times) people are using the term: team leader to provide an ambiguous reference to the job scopes relevant to an engineering manager or a tech lead. But in the meanwhile, there are huge difference between the two….so when the manager is coming and asking he is looking forward you to be a team leader, feel free to use the job scope below to align with him 😂

Read more...

Code Refactor Tips

 |  7 minute read

Just like food and beverages or the any other things which have an expiry date, code also expires and rottens as features keep stacking onto the existing project, which results in a large amount of redundant, ad-hoc, buggy work in the workspace and eventually increases the cost of maintenance for both new feature development and bug fixes.

Read more...

CS5346 Report - Singapore Property Market Analysis

 |  10 minute read

Singapore’s housing market remains a healthy and steady growth in the past years. Even though the struggling economy caused by the COVID-19 pandemic, there is still a 2.2% of residential property index rose. With limited land supply in a small island country, it is believed the price will continiously prop up in future. This project aims to bring some insights for the property buyers or potential property buyers by providing an overview of important characteristics of properties across different districts in form of geo map and a few further analysis like project development trends, distrcts transactions heatmap, and etc.

In this project, multiple public service APIs and data sources have been utilized and used to form the visualisation data. Tableau is used as the tool to provide various forms of visualisation for different analytical queries.

Macbook

Read more...