View routes.rake
namespace :grape do
desc 'Print compiled grape routes'
task :routes => :environment do
API.routes.each do |route|
puts route

Install with Homebrew

brew install redis

Set up launchctl to auto start redis

$ ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents

/usr/local/opt/redis/ is a symlink to /usr/local/Cellar/redis/x.y.z (e.g., 2.8.7)


Installing Postgres via Brew


Brew Package Manager

In your command-line run the following commands:

  1. brew doctor
  2. brew update
View debug-zindex-stacking-context.js
* Paste this into your dev tools console (or even better as a snippet)
* It will parse the page and find all the things that create a new stacking context
and dump some info about them to the console. It will also outline them on the page.
* This is pretty rough and probably misses heaps of bugs and edge cases.
function run() {
View debug-react-component.js
(() => {
const getSelector = target => {
const tag = target.tagName.toLowerCase();
const classSelector = Array.from(target.classList)
.map(_ => '.' + _)
const idSelector = ? ('#' + : '';
View install-comodo-ssl-cert-for-nginx.rst

Setting up a SSL Cert from Comodo

I use as a registrar, and they resale SSL Certs from a number of other companies, including Comodo.

These are the steps I went through to set up an SSL cert.

Purchase the cert

View Handling Page Transitions on Single Page Web

Handling Page Transitions on Single Page Web Apps


Real world application with a lot of pages (or "screens") have to deal with problem managing the pages' DOM and memory efficiently and at the same provide a nice smooth transition effect between pages. This is not a real problem when you do it in native apps since Android or iOS already handle the hard work for you, but when come to JavaScript, HTML, and CSS, running on mobile browsers, this is the real challenge.

There are 2 common approaches to solve this problem:

  • Approach 1: Keep all the pages in the DOM tree, use CSS (for example display) to transit between pages.
View gist:c41f6932435f0876f3ae9bef10b5f208
(function () {
String.prototype.padRight = function(l,c) {return this+Array(l-this.length+1).join(c||" ")};
// intersection
const intersect = xs => ys => {
const zs = createSet(ys);
return filter(x => zs.has(x)
? true
: false
) (xs);
View fix_mysqldump_single_quote_espace.js
// Fix this bug:
// Usage:
// node fix_mysqldump_single_quote_espace.js data.sql > data_fixed.sql
const fs = require('fs')
const file = process.argv.pop();
const inputStream = fs.createReadStream(file, 'utf-8');
const outputStream = fs.createWriteStream('output', 'utf-8');
let backslashStack = [];