Skip to content

Instantly share code, notes, and snippets.

Avatar

Mike Stringer stringertheory

View GitHub Profile
@stringertheory
stringertheory / email_to_self.js
Created Nov 24, 2021
code for a bookmarklet to email stuff to myself
View email_to_self.js
(function() {
function getSelectionText() {
var text = "";
if (window.getSelection) {
text = window.getSelection().toString();
} else if (document.selection && document.selection.type != "Control") {
text = document.selection.createRange().text;
}
return text;
}
View ogaf-shapes.json
{
"hello world": [[0, 10], [20, 30], [50, 60], [90, 10], [10, 90], [0, 10]],
"boogety boo": [[0, 50], [10, 30], [50, 60], [90, 10], [50, 90], [0, 10], [0, 20], [10, 30], [20, 40], [0, 50]]
}
@stringertheory
stringertheory / skittles.py
Last active Apr 19, 2019
A test of whether skittles are uniformly distributed (using data from https://github.com/possibly-wrong/skittles)
View skittles.py
import sys
import collections
import random
N_TRIALS = 100000
FLAVORS = ['Strawberry', 'Orange', 'Lemon', 'Apple', 'Grape']
def chisquared(values):
mean = sum(values) / float(len(values))
@stringertheory
stringertheory / repeat.py
Created Jan 27, 2019
How many times to repeat something before it sinks in with a group of people?
View repeat.py
import random
import collections
n = 100
p_attend = 0.5
p_listen = 0.5
n_to_remember = 2
people = list(range(n))
random.shuffle(people)
@stringertheory
stringertheory / lenient_url_scrub.py
Created Sep 29, 2018
replacing a python scrubadub regex filter for URL matching that doesn't require protocol
View lenient_url_scrub.py
import re
import scrubadub
class UrlFilth(scrubadub.filth.url.UrlFilth):
regex = re.compile(r'''
(?P<protocol>
(https?:\/\/(www\.)?|www\.)? # protocol http://, etc
)(?P<domain>
@stringertheory
stringertheory / ugh.py
Created Jul 5, 2017
first words of cookywook's tweets
View ugh.py
import os
import tweepy
auth = tweepy.OAuthHandler(os.getenv('TW_CKEY'), os.getenv('TW_CSECRET'))
auth.set_access_token(os.getenv('TW_ATOKEN'), os.getenv('TW_ASECRET'))
api = tweepy.API(auth)
for tweet in api.user_timeline(screen_name='cookywook', count=40):
@stringertheory
stringertheory / prisoner_hat_riddle.py
Created Dec 11, 2016
Playing around with the Prisoner Hat Riddle (http://bit.ly/2hmNSav)
View prisoner_hat_riddle.py
"""Playing around with the Prisoner Hat Riddle (http://bit.ly/2hmNSav)
"""
import random
def make_hats(n_people):
"""Return a list of random black or white hats."""
return [random.randint(0, 1) for _ in range(n_people)]
@stringertheory
stringertheory / goog2md.py
Last active Sep 17, 2016
hack to get markdown, dammit
View goog2md.py
"""Convert a google doc to markdown with all of the cruft removed.
"""
import hashlib
import imghdr
import shutil
import subprocess
import sys
import urllib
import urlparse
@stringertheory
stringertheory / human_centered_design.py
Created Sep 12, 2016
pseudocode for human-centered design
View human_centered_design.py
"""Template for the design process."""
def empathize(people):
raise NotImplementedError
def define(people, needs):
raise NotImplementedError
@stringertheory
stringertheory / proselint_test.py
Created Mar 8, 2016
playing with proselint in python
View proselint_test.py
import sys
import codecs
from proselint.command_line import lint
import termcolor
WINDOW = 40
FORE = 'white'
BACK = 'on_blue'