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 = [];
def elem2dict(node):
Convert an lxml.etree node tree into an object.
Notice: Since the xml and object (json) structure is not the same,
this utils will not work correctly if there is an xml element that
contains multiple duplicate child elements. For example:
<name>Is it me</name>
<hello>You looking for</hello>
View calc.html
var calc = function () {
var value = (this instanceof Number ? +this : 0);
if (!arguments.length) return value;
return calc.bind(arguments[0] + value);
View 20140702230000-1hour-return-20140702220000
d=new Date(a[s](0,4)+'-'+a[s](4,6)+'-'+a[s](6,8)+'T'+a[s](8,10)+':'+a[s](10,12)+':'+a[s](12,14)+'.000Z');
d=(new Date(d-3600000)).toISOString().split('-').join('').split('T').join('').split(':').join('').split('.')[0];