About Collections Archives

TypeScript 2.0 and Strict Null Checking

3 min read

The most recent TypeScript 2.0 includes the ability to treat every type as non-nullable. This is powerful, as ignoring null often leads to latent problems. This post enumerates common type errors related to strict null checking and how they can be remedied.

Anatomy of a Bug Report

3 min read

A report of an issue should always contain three parts: how to reproduce it, what is being currently observed, and what is the expectation.

ChakraCore on macOS

3 min read

Microsoft open-sourced their JavaScript engine, ChakraCore, sometime ago. Since then, it has been ported to run on other platforms than Windows. This is fantastic, as now it is possible to use it on other Unices, including macOS.

Terminating SSL with Hitch

3 min read

Do you have a web application and still not using SSL? No need to rearchitect your application, you can use a TLS/SSL proxy to front the traffic your application. Among many different choices, Hitch is lightweight, fast, and easy to setup.

Shrinking PNG Images with Quantization

3 min read

A screenshot is usually displayed from a PNG image. If the screenshot is mainly for the web consumption, often it is not important to have every pixel portraying the color faithfully. This is an opportunity to reduce the bandwidth consumption by delivering a reasonably good, quantized version of the screenshot in a smaller PNG image.

Migration: From WordPress to Hugo

2 min read

After using Blogger and WordPress for 5 years each, it is time for something new. I am migrating this blog to a new space,, with the primary objective of delivering it as fast as possible.

Using Zopfli to Optimize PNG Images

2 min read

PNG format is very useful because it preserve all the colors, making it suitable to depict a screenshot faithfully. Unfortunately, many graphics applications do not produce a PNG file with the smallest possible size. Fortunately, this situation can be remedied using an additional tool such as Zopfli from Google.

Isolated Development Environment using Nix

4 min read

In the earlier blog post, I mentioned the use of Nix as a package manager on OS X. In this follow-up, you will witness the power of Nix to create isolated development environments.

Nix as OS X Package Manager

3 min read

Power users on OS X are familiar with Homebrew or MacPorts for installing and managing software packages conveniently. Yet, those two well-known tools are not the exclusive players. There is a growing interest in Nix, particularly for its use on OS X.

API Names and Begging the Negatives

2 min read

When using a programming library, it is unfortunate that we often encounter the use of function and property names in its negative variant. Particularly when there is a choice of two values, using the positive variant would help reducing confusions and ambiguities.

Always-on VPN on Your Phone

3 min read

We often hear stories of harmful last-mile content tampering, from YouTube video downgrading to JavaScript-injected advertisement. This prompted me to run an experiment of always-on VPN on my phone (Nexus 5X running Android 6). Surprisingly, I come to the conclusion that it is definitely feasible to do so without affecting the battery life. Even if you are not a road warrior, it is still good to give it a try and see how it goes.

Using MozJPEG via Docker

2 min read

MozJPEG, a JPEG encoder project from Mozilla, is a fantastic way to optimize your JPEG files. Setting it up however might be quite a hassle. Fortunately, a virtualized environment such as Docker offers a much simplified way to use MozJPEG.

Easy Docker on OS X

2 min read

Using Docker on OS X is getting easier. Previously, it involved setting up boot2docker by hand. With the new Docker Toolbox (which wraps boot2docker and Kitematic, among others), installing Docker is almost trivial.