The house by the sea

Just imagine this.

You live in a house, built out of bamboo and wood, out by the sea. It sat on top of wooden pillars that served as the house’s foundation. They were hammered into the sea bed with the top of the pillars jutting above the sea as though they are struggling for air. But all is good. You got a house to live in and you are out here by the sea, enjoying what nature’s got to offer you.

Then, environment effects attacked the house and its foundation, eating away pieces of wood and bamboo. Years went by. Decades went by. Holes began to appear along the house walls and sections started falling apart. Simultaneously, the house is wobbly and sinking centimetres every year due to weakened foundation. The sea bed in which the pillars stood had grown soft and unable to support the weight of the house.

But it’s your house and you can’t move. You refuse to let it fall apart. And so, you went to work to patch up the house. Every day without fail, you are fixing something. You knew it’s going to be a life long work.

Sadly, that’s not the only thing you have to deal with. You live with bad neighbours. Every time you patch up a section of your house, your neighbours come along and throw rocks at your house causing further damage. And you just keep patching.

And one day, you slipped and hurt yourself so badly that you almost couldn’t move. The pain was unbearable. Yet, you still keep going. You don’t really have a choice. Your house is falling apart, allowing the elements in. You are either wet, cold or too hot. The house can’t keep you in a goldilocks state.

So you work even though the world is against you.

Writing on a touchscreen is just…

Writing is still writing no matter the platform. It’s all about getting the words out, to give them a physical form be it on the screen or on paper. You can write on a piece of paper using a pen. You can write using your smartphone. You can write on your laptop or a desktop computer.

But what I have discovered is that writing on a touchscreen just feel weird and difficult. Some people no doubt won’t have any problems. It’s just not the thing for me.

I got the iPhone X. With its 5.8 inch, nearly edge-to-edge display, it’s way bigger than the iPhone 6s and 7 plus display I used in the past. That means with apps like iA Writer, I can see way more of the text with the keyboard below. The Super Retina HD display meant that text are sharp and clear. Writing on that device had been a joy.

Yet, whenever I tried to write long form, like a short story, my fingers do get really tired from attempting to hit the keys. My fingers are rather fat. Combine that with hyperhidrosis, it means either wrong keys are pressed and I need to hit delete or that the key presses aren’t registered like it should. It slows down my writing by a lot, which is irritating in a way if your thoughts is faster than the words appearing on the screen.

The other issue I have with typing on a touchscreen was the lack of tactile feedback. This is one of the reason why I prefer to write using a keyboard. The sound my finger hitting the keys and the clacky feel when you press the key just feels so good. I know you could enable haptic feedback on the phone such that every key pressed will give you a vibration. But that vibration is missing when you set the phone to silent mode via that switch. Not only that, vibration requires the motors in the phone to work hard and cause faster battery drainage. For the iPhone X, that vibration mode is no more and what you get is simulated keyboard clicks, something that you won’t hear if your phone is on permanent silent mode.

The third issue I have is having to deal with the weight of the device while typing. I know smartphones are small and consider rather light. After all you carry it in your pockets everyday. But it does become heavy when you are holding it in your hands for long period of time as you type. And that particular use case happens quite often if you are writing a long article, an essay or stories. Notes taking is fine actually because those are short burst action and probably won’t be doing it over 1 or 2 hours.

So those three reasons are why I will always prefer to write on a keyboard. And in order to do writings on the go, a portable typing machine is needed. Thus, I decided to reuse the 13inch MacBook Pro (2015) that was in storage. The 15inch MacBook Pro that I’m currently using is just a tad bigger and heavier than what I would like. You know what? Without the keyboard cover, typing on that classic chiclet keyboard is rather delightful. I could type equally fast on it.

And now I’m curious about what’s the primary device that you use to write everyday? And why.

Glass full or half empty

Glass half full or half empty? This is a general litmus test to determine a person worldview when it comes to life.

When a person says it’s half full, he or she could be optimistic about life.

When a person says it’s half empty, he or she could be pessimistic about life.

But what if…

I tell you that it is simultaneously full and empty?

To write, is to tell a story

Writing is a form of communication. It is a tool to help two person connect with each other, to exchange ideas or to entertain.

But these days, there are so many pieces of writing published online that are simply variations of listicles that has headings like, “ten different ways…” Or “five things you should do…” No doubt they allow for exchange of ideas but they are boring as fuck.

The biggest problem I have with listicles is that, they take away the individuality that goes into a piece of writing. They take away the humanity from writing. And worse, they don’t really tell the human story. They are like the sales report generated at the end of every month to show the bosses. It’s cold. Uncaring. I don’t want to read those. Period.

What I will read though is a piece of writing that tell the story about a human, his or her thoughts, what he or she sees, the experiences, and how he or she navigates through the world. Because I want to connect, or in other words, feel what the person is going through. I want to understand the human condition.

If not that, then the piece of writing is to entertain the readers by bringing them into an alternative world or life. Real life is boring and mundane. Sometimes, real life is a nightmare. Just like those sales report.

So to write, is to tell a story that either entertains, allow people to connect and share ideas, and not give people nightmares.

P.S. I was actually struggling the whole night about what to write because I couldn’t think of anything meaningful to write about. I’m exhausted from work while also feeling really uncomfortable and sick from hives outbreak. Took me a while before I decided to just rant. So I won’t call this the best piece of my work.

Not effective way to build a product

There are many ways to go about building and shipping a product. Countless product companies have shown how to be successful.

This article is not about that.

I am here to talk about a specific non-effective way to build a product I encountered firsthand and don’t think is right. This way is something I have seen variants of during my brief career as a software engineer. Due to the culture here, I feel pretty confident to generalize to the whole of the tech industry in Singapore. But I will not generalize it to else where in the world because I have not experience them firsthand. It just won’t be right.


You are a company with multi-hundred millions in profit every year, and there are thousands of employees scattered across various business units within the company. These employees are required most of the time to take on multiple projects, applying their specific skills in those projects. As a company, you have been around for nearly half a century, have worked on countless projects, and successfully delivered them. Your core business is about delivering solutions on-demand.

Recently, a new project was awarded to you and you like to make the end solution a product as part of the company’s new direction to build products. The project was also sub-contracted out to another company from overseas to do the other part that you have zero experience in and is also more cost-effective.

What did you do?

You “parachuted” in someone who wasn’t included in the original tender process to lead the project. This person has no idea what just happened, no background, nothing. Shortly after, you got a new employee who only has prior experience in developing web-based products and working experience in data science. This new employee is responsible for everything backend.

Over the couple months, the project team was tasked with design of the application, with incomplete information, incomplete user requirement, and called upon to start writing codes because the project only has a six month before delivery.

Three months since the project started, you got a couple of new hires to fulfill the headcount that you submitted as part of the project tender. The new hires were “orbital dropped” in to think of, design, and implement functions that the users will want in addition to the pre-existing ones defined in the specification, which are scoped way out of the capability of the team, half of whom has zero experience in the specific technology stack.

You also expect the team to build the application (both backend and frontend) such that it is highly modular for “anytime” enhancements and capable of supporting future requirement of supporting mobile platforms. Full delivery is also expected within six month.

At the same time, you expect the barebone team to also deliver proper documentations in accordance to CMMI. These documentations will be subjected to audits in six months time, same time as the project delivery.

Lastly, you also told the team that the project is on very tight budget and can’t afford any delays.

What you didn’t do?

There isn’t even one full-time product designer taking care of the whole user experience because the project funds didn’t cater for that.

In addition, there is no product manager and instead you have a project manager who has zero experience in building a product and successfully deliver that.

Existing solutions from other projects that are very similar to the one the team is building weren’t shared and everything has to be rebuilt from scratch.

Design wasn’t done for even the individual components, with zero standards to follow when it comes to building the various software layers. Everyone is given free rein. The project isn’t following agile development and isn’t design-driven,

No additional backend developers were added due to budgetary constraint.

Information isn’t flowing freely due to compartmentalization or simply lacking because you didn’t get someone experienced enough to ask the right questions.

What is the end result?

Without a proper designer, the application is basically a bunch of duct-taped solutions with ugly icons and images without detailed care of how user will interact with it.

The application as it stands now also has poorly named classes, poorly defined functions, with zero standards on the APIs. Proper use of design patterns were non-existent.

Documentations are all still in rough drafts, with each person covering their respective portion, and not even complete despite audit is in few days time.

The team member who has to deal with the backend is so swarmed with work and has to stay back late for the last few months until it affected the husband-wife relationship and parent-child relationship. That team member did raised the request for additional manpower but kept getting rejected and was told by management to work even harder.

Of the new hires, one has zero interest in product development or thinking like a product developer, will only do as told, leave work on time, and has no further desire to climb the ladder. The code written was functional and in accordance to specification but lack any proper design, lack care for usability and performance. This new hire is focus only on frontend development and has minimal backend experience. The other became a full-stack developer, has product development root, has desire to grow as a product developer and designer but didn’t get any mentors because the focus was project delivery. This person has no issue with delivering but felt thoroughly dissatisfied with the job. This person also already has his other foot out the door, looking at a career change and is just looking for a reason to quit product and software development for good.

As it got closer to delivery date, the team is hit with new information about the customer’s environment that possibly wasn’t thought of early during the requirement gathering stage. Now the team isn’t even sure if it’s possible to replicate customer’s environment fully to test out any solutions.


With a dysfunctional team, dysfunctional management, poor information dissemination, the need to reinvent the wheel so often, product development just simply cannot take place no matter how much you wish for it.

The culture of the company, and the project-oriented mindset of the higher management and people on the ground is just very inconducive to product development and innovation. So that is another nail to the coffin for product development.

So if you are a big company and really want to build a product, please don’t do it this way.