Skip to content

Instantly share code, notes, and snippets.

@miketahani
miketahani / date_finding.py
Last active January 16, 2023 16:22
answer to a NICAR-L question
import re
from datetime import datetime as dt
fake_dates = '10-Jan-2011, 01-Feb-02, ##-Bla-##, 01-Bla-2014'
# you can probably do some lookahead assertion at the end of the regex to only capture 2 digits or the last 2 digits
# instead of the mess below [1]
date_finder = re.compile('(\d{2}-(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-\d{2,4})')
dates = re.findall(date_finder, fake_dates)
@miketahani
miketahani / flickr_photo_scraper.py
Last active June 29, 2016 18:38
get/store flickr photos in a spreadsheet
#!/usr/bin/env python
# get/store flickr photos in a spreadsheet
# you'll need a key: https://www.flickr.com/services/api/keys/apply/
import csv
import json
import sys
from base64 import encodestring as b64
from urllib import urlencode, urlopen as get
from optparse import OptionParser
@miketahani
miketahani / README.md
Last active November 9, 2015 23:54
d3.unconf ticket

hacky web audio api + d3.

instructions

allow mic access, talk at computer.

view here

@miketahani
miketahani / wtf.py
Created November 5, 2015 22:38
python html parsing inconsistencies
import re
from sys import argv
from bs4 import BeautifulSoup as bs
from pyquery import PyQuery as pq
from lxml import etree
filename = argv[-1]
anchors = re.compile('<a.+?>.+?<\/a>', re.DOTALL|re.I)
with open(filename, 'r') as infile:
@miketahani
miketahani / index.html
Last active April 15, 2016 17:58
faded circles
<!doctype html>
<html>
<head>
<meta charset='utf-8'>
<style>
* {
box-sizing: border-box;
}
body,
@miketahani
miketahani / index.html
Last active April 19, 2016 17:29
flocking example
<!doctype html>
<html>
<head>
<meta charset='utf-8'>
<style>
* {
box-sizing: border-box;
}
body,
@miketahani
miketahani / actions.js
Created April 20, 2016 08:07 — forked from roman01la/actions.js
Redux WebSockets recipe
const MODULE_NAME = 'base-app/events/'
export const CONNECT_WS = MODULE_NAME.concat('CONNECT_WS')
export const DISCONNECT_WS = MODULE_NAME.concat('DISCONNECT_WS')
export const SUBSCRIBE_WS = MODULE_NAME.concat('SUBSCRIBE_WS')
export const UNSUBSCRIBE_WS = MODULE_NAME.concat('UNSUBSCRIBE_WS')
export const EMIT_WS = MODULE_NAME.concat('EMIT_WS')
export const NEW_EVENT = MODULE_NAME.concat('NEW_EVENT')
export const ADD_EVENT = MODULE_NAME.concat('ADD_EVENT')
@miketahani
miketahani / index.html
Last active January 19, 2018 12:25
map tile viewer
<!doctype html>
<html>
<head>
<meta charset='utf-8'>
<link rel='stylesheet' href='http://cdn.leafletjs.com/leaflet/v0.7.7/leaflet.css' />
<style>
* {
box-sizing: border-box;
}
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# scrape complex systems article pdfs
# requires bs4: `pip install beautifulsoup4`
import os
import re
import json
from urllib import urlopen as get, urlretrieve as save
from bs4 import BeautifulSoup as bs
@miketahani
miketahani / GIF-Screencast-OSX.md
Created June 30, 2016 23:11 — forked from dergachev/GIF-Screencast-OSX.md
OS X Screencast to animated GIF

OS X Screencast to animated GIF

This gist shows how to create a GIF screencast using only free OS X tools: QuickTime, ffmpeg, and gifsicle.

Screencapture GIF

Instructions

To capture the video (filesize: 19MB), using the free "QuickTime Player" application: