The biggest decision I made in my career


I had been working as a software engineer for 10 years. I started out working as a contract front-end engineer with no benefits.

It was a work-from-home job so I was home nearly all the time.

One day, my Dad told me to get an “actual” job. At least talk to somebody.

Real Job

I joined an IT consultancy firm shortly after that. No bonus, no yearly benefits.

But hey, at least I get to talk to somebody.

I slowly work my way to the position of Team Lead. I picked up back-end development and did client-facing work along the way.


Logs of significant things that I have done in 2017. Will be constantly updating. Hopefully.


  • Edited my first travel vlog: Link
  • Submitted my first answer to Stackoverflow: Link
  • Answered my first question on Quora: Link
  • Learned Facebook Marketing and get actual ROI: Link


  • First submission to dribbble: Link

My last review was for 2013. That was truly a remarkable year where I started my first brick-and-mortar business, committed my first open source code and was doing meaningful projects at work.

The past 2 years had been somewhat successful to a certain extent but I just didn’t manage to jot down the memories, which I’m regretting now. So to break this negative combo, here is my 2016 review.

  • Fulfillment By Amazon (FBA)

I always wanted to do some sort of trading — buying and selling products. But I’m not interested in the logistics part of it. FBA was the…

and why I called it Titmice

Tufted titmouse

Titmice is a small songbird from North America that stores food in winter for later use.

Many of my friends were surprised when I told them I was building an app to track expenses. I could see the flash of “wut, another one?” micro-expression displayed across their face.

If you have the same question floating in your mind right now, please indulge me for a couple of minutes while I explain my motivation for building Titmice.

How it started

The beginning of Titmice had little to do with expenses. I was starting my 2…

A negotiation gets difficult when your counterparts start displaying uncooperative behaviours.

They can

  • be fixated on certain issues, refusing to move the conversation forward
  • demonise you and goes off on a diatribe that have little relevance with the issue on hand
  • be extremely defensive
  • easily provoked into an angry response

Such uncooperative behaviours might happened out of anger and fear, because they either

  • don’t know any more effective ways to behave
  • don’t see any benefits to negotiating
  • just simply asserting dominance as a alternative of not being dominated

In short, they decided to give up on proper communication.

In such…


Tired of getting your email ignored? Try this neat technique.

You had been chasing a potential lead for a few weeks and things were looking up for you.

The rapport was strong and with some gentle nudging, this lead can be converted into a full-time paying client. Victory was so near, you can almost taste it.

Then, communication just went cold.

Your emails were ignored and no reasons were given. Was it some off-the-cuff remarks that you made? Or were they secretly unhappy about the contract’s clauses?

There was no way to find out.

Your ignored emails felt like shredded…

Or why articles should not emphasize on the cost of “Getting It Done”

Pokemon Go

Pokemon Go is all the hype right now. There are two complementary app that are appearing on my newsfeed for different reasons — GoChat and GoSnap.


GoChat is facing server scalability issue and since it’s a free app, the increasing popularity of the app is compounding the cost of server operation.

From the article, it states that the application had been crashing often and it will take $4000 to stabilise the servers. Jonathan Zarra, the founder, is understandably frustrated by this.

“This is a feature that really…

Illustrated by Jowin Tam

This article was originally posted on AWS Elastic Beanstalk Survival Guide: How to configure AWS Elastic Beanstalk to scale

In this chapter, we are going to explore the configuration settings that you should adjust to achieve scalability.

So what do we mean by scalability?

It is the capability of a system to handle a growing number of work.

If the configuration for your Elastic Beanstalk environment is set wrongly, having a load-balanced, auto-scale environment type will still not scale properly, hence hindering performance.

Before we begin, you should note that different type of applications require different amount of scalability. …

Illustrated by Jowin Tam

This article was originally posted at AWS Elastic Beanstalk Survival Guide: How to deploy your application to AWS Elastic Beanstalk

In this chapter, we will be learning to deploy application to AWS Cloud with Elastic Beanstalk. We are assuming that there are at least two different environment version that you will need to deploy — staging and production.

There will be two deployment scenarios that we are going through:

  1. Deploying two different environments inside the same Elastic Beanstalk Application.
  2. Deploying two different environments to two different AWS account.

For most of the time, we will be encountering the first scenario…

A cautionary tale about the magic of AWS Elastic Beanstalk

Using T2 instance type without creating VPC

1) Create an application from the management console.

2) Create an environment within that application.

3) DO NOT check the “Create this environment inside a VPC”

Colin Toh

Writes about web stuff on

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store