How to Remotely Debug PHP
Using Terminal (Vim + VDebug + XDebug)

Scenario:

You need to debug an existing PHP site (wordpress, joomla, drupal, etc..), and you find it very difficult/time-consuming to set up your development IDE to simulate the deployed environment.

You want to have a quick look of what's actually going on, directly from the SSH terminal.

TL;DR

Use xdebug to intercept PHP scripts, and communicate with vdebug via dbgp.

(Please ignore the rest of article if you are not comfortable with vim - the editor).

Read more How to Remotely Debug PHP
Using Terminal (Vim + VDebug + XDebug)

One Extension for Both Chrome and Firefox

I wrote the first version of Firefox extension of Simple Gmail Notes about one and half year ago, and now I am forced to develop a new one using WebExtension technology, because the old jpm addons would be fully disabled after Firefox 57.

That was quite a surprise, because when I started to develop the extension back then, jpm was the most recommended technology for Firefox addon development. And I suffered so much during the development.

Anyway, now the the extension already got some problems with new Firefox (FF 50+), especially with the OAuth. So I am left no choice except starting on this ASAP.

Read more One Extension for Both Chrome and Firefox

A Small Git Problem
(And why I am still uncomfortable with Git)

Recently, I have used Trac to manage a git project, and I used a git post-receive hook to sync the commit back to Trac.

The hook starts with something like this:

It works fine for most cases, however, when I try to push a new branch to remote, the $oldrev becomes 0, and caused problem.

fatal: ambiguous argument '0..70e0844': unknown revision or path not in the working tree.

Read more A Small Git Problem
(And why I am still uncomfortable with Git)

Automated Testing for Chrome Extension

Since I have migrated the extension of Simple Gmail Notes as an official side project of the new company , I would like to keep a more rigid development process of this.

Very soon, the extension would need to support 4 different environments, it would be run for:

  1. Chrome + Gmail
  2. Firefox + Gmail
  3. Chrome + Google Inbox
  4. Firefox + Google Inbox

Read more Automated Testing for Chrome Extension