Latest posts

How to Find IP for Synology DSM on New Router

We move a lot and so does our Synology NAS DS215j. When we move to a new home, there will be a new router, and Synology DSM needs to be mapped on this new network. It's not always a straightforward transition process though, depending on the difference between the old and the new router. Sometimes it works like a charm without any additional work, and sometimes it feels like moving mountains to do something as basic as finding the IP for the Synology device.

Basic MySQL Commands

My own quick reference guide for MySQL database

Basic Shell/Unix Commands

I get rusty from time to time and need a quick tutorial to get myself back into the tech game. This reference doc is fairly basic but saves me the trouble of having to google (which doesn't work in China) other reference websites or Stackoverflow.

Convert Multiple Images Into One Single PDF

A lot of manga series found online are in image format, like JPG or PNG and it's one image for one page. Mac's Preview app can read them if needed, but that's not very convenient. It would be nice to convert them into one single PDF file so that it can be read in any device and easily shared with others. This can be accomplished with a command-line tool ImageMagick on Mac.

Basic PostgreSQL Commands

We use MySQL for Linkqlo app as that was part of the good old stack of PHP-MySQL chosen by the IT vendor we worked with. In 2015~2016 as we gradually refactored PHP endpoints into Haskell, we started running into various issues of MySQL since some of its libraries didn't work well with Haskell or our deployment script. Eventually they were all fixed, but it was a big hassle. For our new Mirror Mirror app, since it was built from scratch, we chose a stack that would fully leverage our technical capability - Haskell for endpoints, React-Native for front-end, PostgreSQL for database, and Nix for deployment.

Favorite Podcasts of 2017

Back in 2008~2009 when I was soaked in the underground music scene in Beijing, I thought about creating an English podcast to introduce indie rock music from China to the western audience. The inspiration came from a four-hour mp3 file of Anthony Wong of Tat Ming Pair of Hong Kong in his early radio DJ years. In this audio clip Anthony Wong was commenting in Cantonese on Depeche Mode's latest album in the background music of Tour de France by Kraftwerk. It was devilishly cool.

Blogging On Pelican

I've come to really enjoy Pelican since moving my personal blog from wordpress to static site generator Pelican on a Github Page in 2014. It's not the easiest thing to set up in the beginning and it took me months in countless iterations to settle down a well-tuned configuration that met my needs. The end-game is very satisfying though.

How To Git Tag A Commit

Tagging helps to keep track of key versions of a codebase. During the last few frenzy days toward submission of a new app to iTunes Connect, I sometimes make 10~20 commits a day to clean up various small patches here and there. One month from now when memory becomes hazy, it's important to be able to identify exactly which version of the binary on the git server corresponds to the one that is currently available in App Store. I follow the below workflow to tag a particular commit.

My Git Work Flow

Here's the git flow I use while working on our latest iOS app Mirror Mirror

How to Serve Wordpress Site from Subdirectory

Wordpress by default is installed in the root directory var/www/abc.com/public_html. This causes a lot of inconvenience as often we need to install other files into separate subdirectories under root directory. A good installation practice should keep every project in its own subdirectory.