Skip to content

Instantly share code, notes, and snippets.

@evilchili
evilchili / models.py
Created June 25, 2014 16:36
unique values from a django model field containing CSVs
from django.db import models
class Record(models.Model):
types = models.CharField(db_index=True)
# ... some other stuff ...
@classmethod
def distinct_types(cls):

Keybase proof

I hereby claim:

  • I am evilchili on github.
  • I am evilchili (https://keybase.io/evilchili) on keybase.
  • I have a public key whose fingerprint is 5C84 9002 AF90 54A5 B0AC 59C9 7F71 CCBA 31ED 33DD

To claim this, I am signing this object:

@evilchili
evilchili / jenkins_timestamped_buildstep.sh
Last active December 6, 2015 20:36
prefix jenkins shell build step output with timestamps
#!/bin/bash
#
# Requirements: moreutils (see https://joeyh.name/code/moreutils/)
set -e
function buildstep {
# perform all your actual build things inside this function.
# Don't halt on errors so we can clean up after ourselves.
@evilchili
evilchili / count_syllables.py
Created December 2, 2014 16:20
count syllables in a word (poorly)
# -*- coding: UTF-8 -*-
import re
from unidecode import unidecode
from nltk.corpus import cmudict
# the cmu corpus contains syllable counts
cmu_dict = cmudict.dict()
# compile the regexes we'll use to try to count syllables
vowels = u"aeiou"
@evilchili
evilchili / read_fixture.py
Created December 8, 2014 15:31
load django fixtures into memory
from django.core import serializers
from django.core.management.commands.loaddata import Command as LoadDataCommand
import os
def read_fixture(file_name):
"""
Read a fixture and return a list of objects without updating the database.
This method is derived from django.core.management.commands.Command.load_label(),
@evilchili
evilchili / success_rate.sh
Created December 9, 2014 15:28
execute a command n times and report the percentage of success
#!/bin/bash
ITER=10
SCALE=3
CMD=$*
bc <<< "scale=$SCALE; $(for i in `seq 1 $ITER`; do $CMD &>/dev/null && echo $?; sleep 1; done | wc -l)/$ITER * 100"
@evilchili
evilchili / coffee.coffee
Created February 5, 2015 05:16
coffee module for hubot
# Description:
# Drink better coffee.
#
# Commands:
# hubot make me some coffee - Serve up a cup of joe
# hubot get coffee <name> from <roaster> @ <url> - add a coffee to the bar
# hubot sell me that coffee - provide source URL for the last coffee served
#
sizes = ['6oz','8oz','12oz','16oz','24oz']
Several years ago I worked for a company that had a lot of very senior engineers, many of whom had worked quite closely for many years. When the company started hiring new talent, many of whom were younger, frictions arose. One such problem was the ongoing, entrenched issue of tab widths. The senior engineers, true to their idiosyncratic nature, preferred three spaces for tabs. The newer engineers generally preferred four, and being young, often held an attitude of superiority and a certain contempt for their elders. They continually committed changes with tabs four spaces wide, which the senior engineers would revert. Tensions flared, increasingly antagonistic commit messages were logged, and flamewars erupted between proponents of three-wide tabs ("the threes") and those of four-wide tabs ("the 4ists").
This went on for some time, until at last an exasperated engineering manager called an all-hands meeting, and got everyone in a room. He said that they would put it to a vote, and sure enough, when he asked
@evilchili
evilchili / back_to_my_laptop.sh
Created September 3, 2015 03:45
redirect STDIN to a file on the host where your current SSH session originated. put it in your .bashrc!
# Example 1:
# laptop% ssh remotehost
# remotehost% uptime | laptop remote_uptime
# remotehost% exit
# laptop% cat remote_uptime
# 20:41:11 up 9 days, 4:02, 20 users, load average: 0.02, 0.01, 0.00
#
# In other words, it's like starting this:
# laptop% ssh remotehost uptime > remote_uptime
@evilchili
evilchili / mdserve.py
Created January 6, 2016 18:26
A Minimalist webserver that listens on 8000, handles gets, and renders markdown if the request asks for a file ending in .md. Requires mistune.
#!/usr/bin/env python -u
"""
A Minimalist webserver that listens on 8000, handles gets, and renders markdown if the request asks for a file ending in .md.
"""
import os
import SimpleHTTPServer
import mistune
renderer = mistune.Renderer(hard_wrap=True)
markdown = mistune.Markdown(renderer=renderer)