Skip to content

Instantly share code, notes, and snippets.

View dom.ts
function dom<T extends HTMLElement>(
name: string,
props: { [key in keyof T]?: any } = {},
children: Array<HTMLElement> = []
): T {
const result = document.createElement(name);
Object.entries(props).forEach(([name, prop]) => (result[name] = prop));
children.forEach(child => result.append(child));
return result as T;
atmin / Compact dynamic VM image
Last active Aug 25, 2016
Compact dynamically expanding VirtualBox CentOS image
View Compact dynamic VM image
1. Delete unnecessary files from image
2. sudo yum install zerofree
3. reboot, edit kernel parameters, add 'rescue single ro'
4. remount root read-only:
sudo mount -r -o remount /dev/mapper/vg_centos6generic-lv_root
atmin / tmux-debian-wheezy
Created Jun 16, 2016
Install tmux > 1.8 on Debian Wheezy
View tmux-debian-wheezy
# tmux 1.8 offers Zoom mode
sudo add-apt-repository ppa:pi-rho/dev
sudo apt-get update
sudo apt-cache show tmux # list tmux versions
sudo apt-get install tmux=LAST_VERSION_LISTED
atmin /
Last active Dec 29, 2015 — forked from mhl/
Compare git revisions via meld in a more sane way than `git difftool` Usage: rev1 rev2 e.g. HEAD HEAD~3
# This fork works under Python 2.x
# This is script that extracts the trees of two commits to temporary
# directories and then runs meld on both directories, so you can compare
# them using meld's nice recursive browsing interface.
# This is for an answer to this question:
atmin /
Created Oct 18, 2013
JavaScript RegExp monad
# Need this in JavaScript? Use "Try CoffeeScript"
# A micro DSL for building maintainable, complex, dynamic regular expressions
reBuild = ->
re = ''
self = {
# Append regular expression
atmin / rateLimit.js
Last active Dec 20, 2015
Execute given `func`tion no more often than once every `delay` milliseconds, queue all calls, do not drop anything (unlike throttle and debounce)
View rateLimit.js
** Execute given `func`tion no more often than once every `delay` milliseconds,
** queue all calls, do not drop anything (unlike throttle and debounce)
** Example usage:
** rateLimitedFunc = rateLimit(function (i) { console.log(i) }, 500)
** for (var i=0; i < 10; i++) rateLimitedFunc(i)
function rateLimit(func, delay) {
var queue = [],
from fabric.api import local
import sys, os, webbrowser, jinja2
BASE_PATH = sys.path[0]
SRC_PATH = os.path.join(BASE_PATH, 'src')
BUILD_PATH = os.path.join(BASE_PATH, 'build')
JINJA_ENV = jinja2.Environment(loader=jinja2.FileSystemLoader(SRC_PATH))
View gist:f688a318db6bf8b68384
### Keybase proof
I hereby claim:
* I am atmin on github.
* I am atmin ( on keybase.
* I have a public key whose fingerprint is 06A7 F329 1A15 C68B 310E D752 EF90 6F97 1199 9FC9
To claim this, I am signing this object:
View SimpleTrie.js
function Trie(key) {
atmin / vcenter.css
Created Mar 6, 2014
CSS vertical center, IE9+
View vcenter.css
/* src: */
.vcenter {
position: relative;
top: 50%;
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
transform: translateY(-50%);