Skip to content

Instantly share code, notes, and snippets.

ReidWilliams / inspect.js
Created Jul 13, 2015
Inspect functions that are part of a promise chain
View inspect.js
// Uses underscore.js to wrap a function and upon calling
// prints the function source and the argument.
// Useful for debugging chains of promises.
// var myfunction = function(argument) {...};
// myfunction = inspect(myfunction); // myfunction is now instrumented
var _ = require('underscore');
var util = require('util');
var inspect = function(fnToInspect) {
ReidWilliams /
Last active Jan 27, 2017
One line command to kill node debug processes on Mac OS
kill -9 $(ps -ef | grep '[n]ode --debug-brk=5858' | awk '{print $2}')
while true; do rsync -e "ssh -i /PATH/TO/PRIVATE/KEY.pem" -azvh --delete ./LOCAL-REPO/ ec2-user@IP:/REMOTE/PATH; sleep 2; done
ReidWilliams /
Last active Jun 4, 2019
ffmpeg cheatsheet
# images to video at 10 images per second, 64x64 resolution, named like 000000.jpg
# -start_number 12 starts at image 12
# -vframes 100 creates a video with 100 frames
# the -pix_fmt option makes it quicktime compatible
ffmpeg -y -r 10 -f image2 -s 64x64 -start_number 12 -i %06d.jpg -vframes 100 -pix_fmt yuv420p -vcodec libx264 ./video.mp4
# match image names by file glob
ffmpeg -y -r 10 -f image2 -s 1920x1080 -pattern_type glob -i "*.jpg" -pix_fmt yuv420p -vcodec libx264 ../video.mp4
# video to images, image size of 160x128, 10 frames per second, named like 000000.png,
ReidWilliams /
Last active Feb 22, 2021
resize crop with imagemagick
# resize all files in directory <in> so that the shorter dimension (or both dims) is 64 pixels, then
# crop the longer dimension to 64 pixels.
magick convert in/* -resize 64x64^ -gravity center -extent 64x64 'out/%06d.jpg'
# crop images using find / exec. Find / exec is useful when there are many images and file globs don't work.
# Crop to 1150 by 512 at the top, left edge of the image
find ./*.jpg -exec magick convert {} -crop 1150x512+0+0 {} \;
ReidWilliams /
Created Dec 5, 2017
SSH with port forwarding
# Easy way to remotely access a Jupyter notebook, by forwarding a port
# Forward local port 8888 to the remote's localhost port 8888
ssh -L 8888:localhost:8888 user@
ReidWilliams / anaconda.txt
Created Dec 15, 2017
Anaconda cheatsheet
View anaconda.txt
# create environment with jupyter
conda create -n ENVNAME python=3 jupyter
ReidWilliams / freeze-install.txt
Created Jan 30, 2018
Python: freeze and install packages
View freeze-install.txt
$ pip freeze > requirements.txt
$ pip install -r requirements.txt
ReidWilliams / pandas.txt
Last active Feb 22, 2018
Pandas cheatsheet
View pandas.txt
# rename a dataframe column
dataframe = dataframe.rename(index=str, columns={'old_col_name': 'new_col_name'})
# get all possible values for a string / categorical column
# group data and count number of rows in a group
grouped = dataframe.groupby(color)
nreds = len(grouped.get_group('red'))
View gist:20cfdeb1dd4d90201b24d40a3e5a181d
def estimate(self, X):
""" Use saved model to predict/estimate retention probability.
X (dict): dictionary of features, values.
Automatically uses model trained on same set of features as
X argument.
List of one element, retention probability.