Skip to content

Instantly share code, notes, and snippets.

View tchen's full-sized avatar
:shipit:

Tom Chen tchen

:shipit:
  • Dallas, TX
View GitHub Profile
@tchen
tchen / gist:a1c7f681a4f06f788390
Created September 1, 2015 15:03
Good tips to follow on OSS code maintenance and patching
Tips for getting your patches accepted:
Don't needlessly break compatibility with older versions of PyCrypto. Patches that break compatibility with older version of PyCrypto, especially PyCrypto 2.0.1, will need an explanation about why it's worth breaking compatibility. Exception: Removing buggy code that nobody uses is fine.
Don't needlessly break compatibility with older versions of Python. Run the test suite using Python 2.1 and the latest version of Python 2.x.
Don't needlessly add complexity. The more complex the code is, the harder it is to maintain, and the more likely it is to have bugs.
Don't needlessly add features. Seriously. X.509 doesn't belong in PyCrypto. Or anywhere, really.
Don't create copyright headaches. It took me the better part of a year to sort out the licensing ambiguities in PyCrypto 2.0.1. If you're adding new files, include the standard PyCrypto public domain dedication at the top.
Whatever you do in _fastmath.c, also do in _slowmath.py. PyCrypto has two math libraries: one that
@tchen
tchen / gist:ed9f319c2c5736a8e985
Created June 18, 2015 16:10
Helpful functions
# Tuple abs val
def tup_abs(t):
return math.sqrt(t[0]*t[0] + t[1]*t[1] + t[2]*t[2])
# Look for attributes of an object
# Find s in attributes of o
def find_attr(o, s):
import re
regex = re.compile(r'.*'+s+'.*')
return [ at for at in dir(o) if regex.match(at) is not None ]
@tchen
tchen / gist:3eb9f58041d3765cb9df
Last active August 29, 2015 14:12
XBMC autostart.sh
To automatically do something at start up of OpenElec, place a shell script at /storage/.config/autostart.sh.
For example, to start playing a playlist at start up, you can place the following in autostart.sh, which will launch a different script in the background (and release, so XBMC will start):
#!/bin/sh
play_videos.sh
This is the content of play_videos.sh, which checks to see if xbmc is running first, and then release. Waits about 20 seconds to ensure XBMC started up completely, then play the video playlist:

Forward X11

vagrant ssh -- -Y