Skip to content

Instantly share code, notes, and snippets.

View eestrada's full-sized avatar

Ethan Estrada eestrada

View GitHub Profile
@eestrada
eestrada / git-aliases
Last active August 29, 2015 14:10
Useful git aliases
# Revert a commit and then check it out as a local change.
# Useful if you want to revert only some of the changes from a commit.
# The working directory and index should already be clean first.
git config --global alias.revclean '!f() { git revert -n $@; git reset HEAD . ; git revert --abort; }; f()'
# push all references to a given remote, then fetch all updates from all remotes.
# This is useful if a remote has more than one push target (like an "all" remote),
# since other remotes that are pushed to won't update their references otherwise.
git config --global alias.pushfetch '!f() { git push "$1" --all; git fetch --all; }; f'
@eestrada
eestrada / sexp.py
Created October 27, 2015 22:29 — forked from pib/sexp.py
A simple Python s-expression parser.
from string import whitespace
atom_end = set('()"\'') | set(whitespace)
def parse(sexp):
stack, i, length = [[]], 0, len(sexp)
while i < length:
c = sexp[i]
print c, stack
@eestrada
eestrada / find_all_modules.py
Created November 4, 2015 00:28
Find all modules of a given name on the Python path. This is similar to running `which -a <cmd>` on the Linux Bash shell.
from __future__ import print_function
import sys
import imp
def find_all(modname, paths=None):
"""Find all occurrences of a given module on a given list of paths.
If no paths are given, sys.path is used.

Keybase proof

I hereby claim:

  • I am eestrada on github.
  • I am eestrada (https://keybase.io/eestrada) on keybase.
  • I have a public key ASCTNsS-svtJ6qajCzUfiRVAcnbPfIt-EVZkH2AA6UH8Vgo

To claim this, I am signing this object:

@eestrada
eestrada / .gitignore
Created October 4, 2017 21:38 — forked from sevko/README.md
simple Python raytracer
*.ppm
@eestrada
eestrada / noise.sh
Created October 13, 2017 15:21 — forked from rsvp/noise.sh
noise : relaxing ambient Brown noise generator (cf. white noise) | Linux bash script using sox | CogSci notes
#!/usr/bin/env bash
# bash 4.1.5(1) Linux Ubuntu 10.04 Date : 2011-10-04
#
# _______________| noise : ambient Brown noise generator (cf. white noise).
#
# Usage: noise [minutes=59] [band-pass freq center=1786] [wave]
# ^minutes can be any positive integer.
# Command "noise 1" will display peak-level meter.
#
# Dependencies: play (from sox package)
@eestrada
eestrada / cleantemp.cmd
Last active September 13, 2019 20:04
The "Downloads" folder is a bloat trap for random files. Treat it like a temp directory and clean it every startup.
:: This is free and unencumbered software released into the public domain
:: using the Unlicense. Please refer to <http://unlicense.org/>
:: This script will completely delete and then recreate your "Downloads" and "Temp" folders in your home directory.
:: This should work for pretty much any NT based version of Windows. If you are still on Windows 9x for some reason, I am sorry.
:: Place this file in "%HOMEDRIVE%%HOMEPATH%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\cleantemp.cmd"
:: or similar to have it run automatically at startup.
:: If, like me, you like to have an explicit Temp directory in your home folder. If not, delete or comment this out.
@eestrada
eestrada / unicode_whitespace.py
Last active September 13, 2019 20:07
Small gist for how to compute unicode whitespace (since it doesn't exists as a constant like `string.whitespace` does)
# This is free and unencumbered software released into the public domain
# using the Unlicense. Please refer to <http://unlicense.org/>
def _unicode_whitespace():
# Yes, it is bad practice to import modules in a function,
# but we are trying to avoid leaving garbage around once we are done generating our values.
import re
import sys
ws_re = re.compile(r'\s')
@eestrada
eestrada / fuzzymatching.py
Last active January 23, 2020 16:30
fuzzy-matching
# This is free and unencumbered software released into the public domain
# using the wording of the Unlicense. Please refer to <http://unlicense.org/>
from __future__ import division, absolute_import, print_function, unicode_literals
"""Use the stdlib module `difflib` to do fuzzy matching.
This module also has mixin classes to make searching containers easier.
It will also use LRU caching when available.
@eestrada
eestrada / safe_mkdir.py
Created February 12, 2021 23:38
Safely clean up a newly created directory when an exception is raised.
# This is free and unencumbered software released into the public domain.
#
# Anyone is free to copy, modify, publish, use, compile, sell, or
# distribute this software, either in source code form or as a compiled
# binary, for any purpose, commercial or non-commercial, and by any
# means.
#
# In jurisdictions that recognize copyright laws, the author or authors
# of this software dedicate any and all copyright interest in the
# software to the public domain. We make this dedication for the benefit