Skip to content

Instantly share code, notes, and snippets.

@kylehg
kylehg / Makefile
Last active August 8, 2017 16:02
Heroku Makefile
.PHONY: runprod
runprod:
heroku local web
.PHONY: deploy
deploy:
git checkout master
git pull
git push heroku master
git tag "$$(heroku releases -n 1 | awk '{print $$1}' | sed -n 2p)"
@kylehg
kylehg / strictify.sh
Created March 10, 2016 19:01
Add 'use strict' to all JS files that don't have it
FILES=$(git grep -L "use strict" lib/shared/**/*.js)
for f in $FILES; do
echo "'use strict'" | cat - $f > .tmpfile && mv .tmpfile $f
done
@kylehg
kylehg / idgen.go
Last active October 1, 2015 07:32
Generic ID generation
// A package for generating and consuming intelligent IDs.
//
// This package exposes a factory function for ID generators, that creates IDs
// that are 64-bit unsigned ints, with bits breaking down as possible:
//
// [TYPE: 8 bits] [ID: 52 bits]
//
// - TYPE (256 options): The type of the object the ID represents.
// - ID (4.5 quadrillion options): The actual ID, depending on the indicated
// sequence type. It should ideally be monotonically increasing so that IDs
@kylehg
kylehg / eslint.json
Last active November 15, 2016 05:23
JavaScript Style Guide
{
"env": {
"es6": true
},
"rules": {
"accessor-pairs": 2,
"arrow-spacing": [2, {"before": true, "after": true}],
"block-spacing": [2, "always"],
"brace-style": [2, "1tbs", {"allowSingleLine": true}],
"comma-dangle": [2, "always-multiline"],
function onReady(fn) {
if (document.readyState != 'complete') {
setTimeout(onReady.bind(null, fn), 10)
} else {
fn()
}
}
def log_enumerate(iterable, step=1):
"""Enumerate an iterable and log its progress"""
for i, obj in enumerate(iterable):
if i % step == 0:
print 'Processed %d objects' % i
yield i, obj
def log_iterate(iterable, step=1):
for _, obj in log_enumerate(iterable, step):

Keybase proof

I hereby claim:

  • I am kylehg on github.
  • I am kylehg (https://keybase.io/kylehg) on keybase.
  • I have a public key whose fingerprint is 2A2D 5A4F F955 D24C 2AFE 5FF1 1B00 0832 19EC 17C3

To claim this, I am signing this object:

###
# Call a Node-style async function and return a promise.
#
# @param {function} fn A function that accepts a Node-style callback.
# @param {...*} var_args A variable number of arguments to pass to the Node function.
# @return {Promise}
###
q = (fn, args...) -> new Promise (resolve, reject) ->
cb = (err, vals...) ->
if (err)
@kylehg
kylehg / pcr-api-refactor-spec.md
Created September 25, 2013 01:50
PCR API refactor spec

PCR API Refactor Spec

Author: Kyle Hardgrave (kyleh@seas)

This is a spec for how I'm going to refactor the PCR API, both internally and externally.

Goals

@kylehg
kylehg / airpennnet-android.md
Created August 28, 2013 15:00
How to connect to AirPennNet on Android without the janky ExpressConnect app.

EAP method: TTLS

Phase 2 authentication: PAP

CA certificate: (Unspecified)

User certificate: (Unspecified)

Identity: kyleh