Skip to content

Instantly share code, notes, and snippets.

nathan todd-stone nathants

View GitHub Profile
View auto-restart.sh
#!/bin/bash
set -eou pipefail
# usage: auto-restart.sh python program.py
trap 'exit 1' SIGINT
count=$(ps -eo args | grep ^/bin/bash | grep "auto-restart $*"$ | grep -v grep | wc -l)
if (($count > 2)); then
echo already running: auto-restart $@ >&2
View rotate-logs.sh
#!/bin/bash
set -euo pipefail
# usage: myprogram.py | rotate-logs /tmp/myprogram.log [1000000]
file=$1
max_lines=${2:-1000000}
touch $file
line_count=$(cat $file | wc -l)
View license.txt
All public gists https://gist.github.com/nathants
Copyright 2012-present, Nathan Todd-Stone
MIT License, http://www.opensource.org/licenses/mit
@nathants
nathants / pip-upgrade.py
Created Jun 18, 2018
check for updates and optionally upgrade packages via pip
View pip-upgrade.py
#!/usr/bin/env python3
"""
check for updates and optionally upgrade packages via pip
"""
import os
import subprocess
import sys
import termios
@nathants
nathants / aws-rotate-access-key.py
Last active Jun 18, 2018
quickly rotate your aws access key
View aws-rotate-access-key.py
#!/usr/bin/env python3.6
import boto3
import os
import pprint
import sys
import termios
import tty
"""
View new-password.py
#!/usr/bin/env python3.6
import secrets
import string
import sys
import tty
import termios
import functools
import math
import operator
View keybase.md

Keybase proof

I hereby claim:

  • I am nathants on github.
  • I am nathants (https://keybase.io/nathants) on keybase.
  • I have a public key ASBvsxkJ-Tl1HIlxes6dJ3bGDfOqAhC_HBJXGuglMvDnOgo

To claim this, I am signing this object:

View log-watcher.py
#!/usr/bin/env python3
import functools
import sys
import time
import collections
import threading
import queue
email_to = '_@_.com'
email_subject = 'error'
View retry.sh
#!/bin/bash
# define the retry fn
retry() {
e=0
if [[ $- =~ e ]]; then
e=1
fi
set +e
max_tries=10
View die-hard.py
from hypothesis import given, settings
from hypothesis.strategies import lists, sampled_from
def new_state():
return {'big': 0, 'small': 0}
def desired_state(state):
return state['big'] != 4
def empty_big(state):
You can’t perform that action at this time.