The Tyranny of Billing

Billing is a critical function of any business. It is more than just collection of money. What better way than to tell a story.

How to Deploy a Standalone Server App

This post shares my experiences deploying a standalone application on a remote Linux server. By standalone application, I mean that the application is packaged as a single file. It could be a jar file or an executable packaged from Java/Scala/C/Haskell/etc. In my case, it was a jar file. My server is Ubuntu 14.04. My automation tool is Ansible and a dash of shell scripts. The process is very much influenced by Capistrano, a tool that is very popular for deploying Ruby web applications. There are three aims. One, I want to deploy in one step. Two, I want to version my deployment. Three, it should cater for easy rolling back.

The Randomness Idea Filter

I use this filter to decide whether a product or feature is worth pursuing. I call it the randomness idea filter. How badly is this product or feature affected by randomness?

Entering the Logistics Industry

Early this year, I joined a logistics company. I’ve been working in technology for the whole of my professional life. This was a welcomed change. I was eager to see how different a conventional industry, such as Logistics, is like. The company is Courex. It does ecommerce logistics in Singapore.

How to Configure WebDAV Using Apache on Ubuntu

WebDAV is an extension of the HTTP protocol that allows users to manage files on servers. There are many ways to manage files on a remote server. WebDAV has several benefits over other solutions such as FTP or Samba). In this article, we will go through how to configure your Apache server on Ubuntu 14.04 to allow native WebDAV access from Windows, Mac and Linux with authentication.

Three Tips for Managing Complexity in Node.js Projects

After working on various Node.js projects, I want to share three simple tips which helps to reduce complexity. If you are building an Express or Restify project, ususally the framework does not tell you how to structure your application. You can put everything in one mega file, or you can(and should) extract different functionalities out.