Skip to content

Instantly share code, notes, and snippets.

Joost Rijneveld joostrijneveld

Block or report user

Report or block joostrijneveld

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@joostrijneveld
joostrijneveld / 3fmnow.py
Last active Sep 26, 2016
Scrape whatever was last played on 3FM (in the current hour)
View 3fmnow.py
#! /bin/env python
from bs4 import BeautifulSoup
import requests
URL = "http://www.3fm.nl/welkliedjewasdat"
r = requests.get(URL)
r.encoding = 'utf-8'
soup = BeautifulSoup(r.text, 'lxml')
@joostrijneveld
joostrijneveld / keyedit.c.patch
Created Jun 23, 2016
Editing GPG's keyedit.c to allow unsigned UIDs
View keyedit.c.patch
--- a/g10/keyedit.c
+++ b/g10/keyedit.c
@@ -1877,7 +1877,7 @@ static struct
{ "nrsign", cmdNOP, 0,
N_("sign selected user IDs with a non-revocable signature")},
{ "debug", cmdDEBUG, 0, NULL},
- { "adduid", cmdADDUID, KEYEDIT_NOT_SK | KEYEDIT_NEED_SK, N_("add a user ID")},
+ { "adduid", cmdADDUID, KEYEDIT_NOT_SK, N_("add a user ID")},
{ "addphoto", cmdADDPHOTO, KEYEDIT_NOT_SK | KEYEDIT_NEED_SK,
N_("add a photo ID")},
@joostrijneveld
joostrijneveld / split.sh
Last active Dec 18, 2015
Splits a set of PDFs into two folders for TAs to check
View split.sh
TAS=( NAME1 NAME2 )
REST=rest
for ta in ${TAS[@]}; do
mkdir -p $ta;
done
mkdir -p $REST
for f in pdfs/*.pdf
do
@joostrijneveld
joostrijneveld / autoresponder.py
Created May 9, 2015
Facebook autoresponder plugin for Poezio
View autoresponder.py
from plugin import BasePlugin
class Plugin(BasePlugin):
def init(self):
self.api.add_event_handler('conversation_msg', self.on_msg)
self.api.add_event_handler('private_msg', self.on_msg)
def on_msg(self, msg, tab):
tab.command_say('[Automatic response] I stopped reading Facebook chat. Do try in some other way!')
@joostrijneveld
joostrijneveld / 2015_R1A_B.py
Created Apr 25, 2015
The partial solution as listed in the GCJ contest analysis for 2015-R1A-B-small seems to contain an infinite loop
View 2015_R1A_B.py
from fractions import gcd
from itertools import count
def naive_get_barber_number(N):
customer = 1;
for T in count(1):
for barber in range(B):
if T % M[barber] == 0:
# at this point N = 0 and customer > 0..
@joostrijneveld
joostrijneveld / scpscreenshots.sh
Created Mar 3, 2015
Shell script that watches the desktop for screenshots (OSX default format) and then copies them to a remote using scp, leaving the URL available on the clipboard.
View scpscreenshots.sh
#! /bin/bash
# change the paths on line 9 and 10 to match your specific configuration
/usr/local/bin/fswatch -0 ~/Desktop | while read -d "" event; \
do \
if [[ ${event} == ~/Desktop/Screen* ]] && [[ -e ${event} ]]; then
newname=`cat /dev/urandom | env LC_CTYPE=C tr -dc 'a-zA-Z0-9' | head -c 16`
scp "${event}" example.com:/var/www/files/screenshots/$newname.png > /dev/null
echo -n "http://files.example.com/screenshots/$newname.png" | pbcopy
@joostrijneveld
joostrijneveld / homer.py
Created Oct 30, 2014
Homer Simpson using Turtle graphics, transcribed from http://youtu.be/UnLz7CaBSFU
View homer.py
from turtle import *
def Homer():
tShirt()
mouth()
rightEye()
face()
eyePositioning()
leftEye()
ear()
@joostrijneveld
joostrijneveld / triangles.py
Created Oct 21, 2014
This file contains the solution to Problem 67 of Project Euler
View triangles.py
#! /usr/bin/env python
with open('p067_triangle.txt') as f:
triangle = [[int(y) for y in x.strip().split(' ')] for x in f.readlines()]
upsidedown = list(reversed(triangle))
rowpairs = zip(upsidedown, upsidedown[1:])
for bot, top in rowpairs:
for i, x in enumerate(top):
top[i] = x + max(bot[i], bot[i+1])
print(triangle[0][0])
@joostrijneveld
joostrijneveld / risk.py
Last active Aug 29, 2015
Computes if/when it makes sense for the defending player in Risk to choose to throw only one die (if allowed).
View risk.py
#! /usr/bin/env python
def printmatrix(matrix):
""" source:
http://stackoverflow.com/questions/13214809/pretty-print-2d-python-list """
s = [[str(e) for e in row] for row in [['['+str(n)+']' for n in range(1, 7)]]+matrix]
lens = [len(max(col, key=len)) for col in zip(*s)]
fmt = '\t'.join('{{:{}}}'.format(x) for x in lens)
table = ['['+str(n)+"]\t"+fmt.format(*row) for (row, n) in zip(s, range(0, len(s)+1))]
@joostrijneveld
joostrijneveld / gpg2qrcodes.sh
Created May 20, 2014
Producing printable QR codes for persistent storage of GPG private keys
View gpg2qrcodes.sh
# Heavily depends on:
# libqrencode (fukuchi.org/works/qrencode/)
# paperkey (jabberwocky.com/software/paperkey/)
# zbar (zbar.sourceforge.net)
# Producing the QR codes:
# Split over 4 codes to ensure the data per image is not too large.
gpg --export-secret-key KEYIDGOESHERE | paperkey --output-type raw | base64 > temp
split temp -n 4 IMG
for f in IMG*; do cat $f | qrencode -o $f.png; done
You can’t perform that action at this time.