Skip to content

Instantly share code, notes, and snippets.

Avatar

Eric Naeseth enaeseth

View GitHub Profile
View keybase.md

Keybase proof

I hereby claim:

  • I am enaeseth on github.
  • I am enaeseth (https://keybase.io/enaeseth) on keybase.
  • I have a public key whose fingerprint is E840 8BD0 D34F 9BB1 5604 68C5 F846 DCC3 1899 A1E2

To claim this, I am signing this object:

@enaeseth
enaeseth / known_hosts
Created Jan 22, 2014
GitHub public key
View known_hosts
github.com,192.30.252.128 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
192.30.252.129 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
192.30.252.130 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/
@enaeseth
enaeseth / build-python-rpm.sh
Created Jan 9, 2014
Build Python 3 on RHEL 5 or CentOS 5
View build-python-rpm.sh
#!/bin/bash
# Requires fpm (path configurable via $FPM) and a working
# build environment.
set -e
version=$1
vendor=$2
View Python stack talk.markdown

Building a Python Service Stack

  • So, Yelp has grown a lot
    • 100 developers
    • 180,000 lines of code in their main repo
    • Taking longer and longer to release new features, even though the features themselves aren't getting more complex
    • How to deal with this? Break up the monolithic project into lots of little codebases, speaking to each other RESTfully over HTTP
  • Issues of the big codebase
@enaeseth
enaeseth / objectid_to_uuid.py
Created Jun 12, 2013
Convert a MongoDB ObjectID to a valid, semantically similar UUID.
View objectid_to_uuid.py
"""
Convert a MongoDB ObjectID to a version-1 UUID.
Python 2.7+ required for datetime.timedelta.total_seconds().
ObjectID:
- UNIX timestamp (32 bits)
- Machine identifier (24 bits)
- Process ID (16 bits)
- Counter (24 bits)
View interrupt.py
"""
Interruptible worker pattern
"""
import threading
class Worker(object):
def __init__(self):
self._running = False
self._wakeup = threading.Condition()
@enaeseth
enaeseth / msas.json
Created Dec 6, 2012
US Metropolitan Statistical Area (MSA)'s, 1999
View msas.json
[
{
"code": 40,
"type": "MSA",
"is_msa": true,
"is_cmsa": false,
"cmsa_code": null,
"name": "Abilene, TX",
"friendly_name": "Abilene"
},
View Alex Lewin.pl
$_ = join("", <>); tr/XO.\n//cd; m/O(.{8}O){3}|O(.{7}O){3}|O(.{6}O){3}|OOOO/s and print "Winner: O\n" and exit(0); m/X(.{8}X){3}|X(.{7}X){3}|X(.{6}X){3}|XXXX/s and print "Winner: X\n" and exit(0); print "No winner\n"
View Łukasz Langa.py
# This code is horrible but you wanted the computation to be done in a single
# generator expression. Cheers!
import json
import sys
def resize(grid):
for line in grid:
line.extend(['.'] * 3)
header = [['.'] * 10] * 3
View Dan Callahan.py
import json
import re # Now I have two problems!
def munge(board):
num_rows = len(board)
rows = [''.join(row) for row in board]
cols = [''.join(col) for col in zip(*board)]
diag1 = [''.join(diag) for diag in
zip(*[' ' * offset + ''.join(row) for row, offset in
zip(board, range(num_rows))])]