Skip to content

Instantly share code, notes, and snippets.

Avatar

Daniel Miller millerdev

  • Dimagi, Inc.
View GitHub Profile
@millerdev
millerdev / lis.txt
Last active Aug 29, 2015
Lis - lisp dialect with semantic whitespace
View lis.txt
define sum term a next b
define iter a result
if
> a b
result
iter
next a
+
term a
result
@millerdev
millerdev / git-pr
Last active Aug 29, 2015
git pr - Fetch GitHub pull request to a new branch
View git-pr
#! /bin/bash
if [ -z "$1" ]; then
echo "Fetch GitHub pull request to a new branch"
echo ""
echo "usage: git pr PULL_REQUEST_NUMBER [BRANCH_NAME]"
exit;
fi
pr_num="$1"
if [ -z "$2" ]; then
View jsonobject-mixin-fail.py
from dimagi.ext.couchdbkit import (
Document,
DocumentSchema,
DictProperty,
IntegerProperty,
StringProperty,
)
class BlobMeta(DocumentSchema):
content_type = StringProperty()
View error_on_load.md

error_on_load column loader strategy for marking column properties that should not be loaded.

It is similar to the deferred loader strategy, but causes an exception to be raised if a column would be loaded by a subsequent (deferred) query. Use error_on_load(k) instead of defer(k) to construct a query option that will cause an exception if an attempt is made to load column k.

This is handy when constructing a query with deferred columns (to optimize load time). It will cause an exception to be raised in your program instead of causing dramatic slowdown due to many deferred-load queries when you accidentally marked a column as deferred that should be loaded eagerly. Fail early.

@millerdev
millerdev / FogBugz_Timesheet_Hours.user.js
Last active May 31, 2017
A Greasemonkey script to calculate and display hours logged on FogBugz timesheet popup.
View FogBugz_Timesheet_Hours.user.js
// ==UserScript==
// @name FogBugz Timesheet Hours
// @namespace fb-ts-hours
// @description Calculate and display hours worked on FogBugz timesheet popup.
// https://gist.github.com/millerdev/96c9b824b8902d4a5c19
// @include http://manage.dimagi.com/*
// @include https://manage.dimagi.com/*
// @version 1
// @grant none
// @run-at document-start
View pglogslim.py
#! /usr/bin/env python3
# filter postgres logs to remove parameters of very large queries
#
# https://gist.github.com/millerdev/def20a42d78717174cd5722a9de2055a
import gzip
import re
import signal
import sys
# HACK prevent "BrokenPipeError: [Errno 32] Broken pipe" output on stderr
@millerdev
millerdev / riak-vnode-check.py
Last active Jan 3, 2018
Check for distinct replicas on riak cluster nodes for a given n_val
View riak-vnode-check.py
#! /usr/bin/env python
"""
Check for replicas on distinct nodes within a riak cluster for a given n_val
https://gist.github.com/millerdev/b6f50640d5fc2519ae8c9c2de3c64af2
"""
import re
from argparse import ArgumentParser
from subprocess import check_output
@millerdev
millerdev / generate-locations.py
Last active Jul 6, 2018
Generate XLSX file containing CommCare locations
View generate-locations.py
#! /usr/bin/env python
"""Generate XLSX file containing CommCare locations
Requires: pip install openpyxl==2.2.5
https://gist.github.com/millerdev/57a5c1363773a92d9ee6332e79789cd3
"""
from __future__ import unicode_literals
from __future__ import print_function
from __future__ import division
@millerdev
millerdev / steps.md
Last active Sep 10, 2018
Update to new version of PostgreSQL in docker
View steps.md

Upgrade to new version of Postgres in Docker

This example upgrades PostgreSQL 9.4 to 9.6

See also https://github.com/docker-library/postgres/issues/37#issuecomment-277621597

Note: you will need compatible pg_dumpall and psql binaries in your path (outside of docker), probably at least at the version you're migrating from. If you don't have those on your local machine, you can use the one in the docker container. Something like this

@millerdev
millerdev / delete_gmail.py
Last active Jul 1, 2019
Permanently bulk-delete messages from gmail
View delete_gmail.py
#! /usr/bin/env python3
"""Permanently delete messages from Gmail
WARNING: THIS SCRIPT CAN DO GREAT DAMAGE TO YOUR GMAIL ACCOUNT.
USE AT YOUR OWN RISK!
Setup guide:
1. Create and activate a new virtualenv with Python 3
You can’t perform that action at this time.